Service discovery for control plane and establishing border gateway protocol sessions

ABSTRACT

Techniques for using global virtual network instance (VNI) labels in a multi-domain network to route network data with a multi-tenant network overlay are described herein. A routing device provisioned in a network domain of the multi-domain network may register with a service discovery system of the network domain for use of network configuration data to establish routes through the multi-domain network with network nodes. Each network domain of the multi-domain network may include an application programming interface (API) server for processing API requests to make changes to configurations of a network domain. A border gateway protocol (BGP) large community may be utilized to encode global VNI labels, network addresses, local next hop nodes, and/or additional network information and sent to routing devices provisioned in separate network domains. A service chain may be signaled by global VNI labels to route network traffic through various services prior to reaching a destination endpoint.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Patent ApplicationNo. 63/193,801, filed May 27, 2021, U.S. Provisional Patent ApplicationNo. 63/193,833, filed May 27, 2021, U.S. Provisional Patent ApplicationNo. 63/193,813, filed May 27, 2021, U.S. Provisional Patent ApplicationNo. 63/193,771, filed May 27, 2021, and U.S. Provisional PatentApplication No. 63/193,757, filed May 27, 2021, the entire contents ofwhich are incorporated herein by reference.

TECHNICAL FIELD

The present disclosure relates generally to using global virtual networkinstance (VNI) labels in a multi-domain network to route network datawith a multi-tenant network overlay.

BACKGROUND

Cloud-based service provider networks offer cloud-based services tofulfill users' computing-service needs without the users having toinvest in and maintain computing infrastructure required to implementthe services. For example, cloud service providers may operate networksof data centers housing significant numbers of interconnected computingsystems, such as public data centers, that are configured by the serviceprovider to provide cloud-based services to users (or “customers”).These service provider networks may provide network-based computingresources on an as-needed basis. For example, a service provider networkmay permit users to purchase and utilize computing resources such asvirtual machine (“VM”) instances, compute resources, data storageresources, database resources, networking resources, network services,and other types of computing resources. Users may configure thecomputing resources provided by a service provider network to implementdesired functionality, such as to provide a network-based application oranother type of functionality.

Exterior gateway protocols may be employed to route communicationsbetween separate data centers and throughout a datacenter and to adesired tenant of a multi-tenant network. For instance, a border gatewayprotocol (BGP) may be utilized to exchange routing and reachabilityinformation between the datacenters. In various respects, BGP may beconsidered as the glue which holds the internet together. However, tomake this protocol cloud-native in a way which can be utilized bymultiple tenants, a service discovery must be performed. For example,BGP sessions are generally long-lived, and static, which is incompatiblewith operating in an ephemeral cloud environment.

Deploying and operating cloud services at scale in an autonomous waymeans rethinking about how the pieces fit together. As things scale, ifyou lack automation, organizations will have trouble operating thesolution in a meaningful way. Take routing, as an example. In amulti-tenant environment, each tenant may want to run their own routingcontrol plane. This would allow them to inject and remove routes fortheir own networks dynamically. However, having to run your own set ofBGP daemons at each ingress/egress point is challenging. If the tenantis doing this or themselves, its a challenge they need to take on. Ifthe operator runs these transparently for the tenant, the operator takeson this challenge. The problem with this approach is that managing allthe individual pieces is a challenge. As the number of tenants grows,the number of BGP daemons grows in unison. The resources required becomechallenging as well. Moreover, maintaining full routing table state inBGP is not possible because BGP inherently only wants to know about thebest path. That is, when advertising a path, the local information aboutwhich paths are available is typically lost. Some recent additions toBGP (specifically BGP add path) look to address this but does not alwaysinclude the set of information required in a multi-tenant networkoverlay.

Additionally, providing multi-tenant network isolation is traditionallysolved using well known architectures such as multiprotocol labelswitching (MPLS) and applications like MPLS virtual private networks(VPNs). One of the key requirements of these traditional solutions isthat they require an end-to-end network built and designed for thespecific application. That is, there's a tight coupling between theunderlay network and tenant traffic that rides on top of it. Forexample, customer traffic may be isolated through the use of a tenantlabel that is stacked on top of the underlay transport labels. Theselabels are in most cases locally significant to a given router.Allocating a globally significant label per tenant would lessen some ofthe burden and allow for different types of underlay transport networks.However, given that labels in current architectures are not globallysignificant this is not possible. Given that labels in currentarchitectures are only locally significant to the next router, thismeans that it's more difficult than it should be to determine anoriginating router and/or tenant label.

Cloud-based Software-as-a-Service (SaaS) are also expanding and aresupporting endpoints. As these cloud-based services expand, devices willbegin to require specific cloud-based services as they are deployed, andas new technologies are developed, devices will need to support furthercloud-based services. However, there is a need for techniques to signala customer admin's intent for which services their traffic should passthrough.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description is set forth below with reference to theaccompanying figures. In the figures, the left-most digit(s) of areference number identifies the figure in which the reference numberfirst appears. The use of the same reference numbers in differentfigures indicates similar or identical items. The systems depicted inthe accompanying figures are not to scale and components within thefigures may be depicted not to scale with each other.

FIG. 1 illustrates an example environment for a multi-domain computingresource network including a routing device of a network domain toestablish network connections between various types of networks usingone or more connectors providing various services.

FIG. 2 illustrates an example environment for establishing amulti-domain network that connects a first network domain, having afirst router cluster, a first application programming interface (API)server, and a first key/value datastore, to a second network domain,having a second router cluster, a second API server, and a secondkey/value datastore.

FIG. 3 illustrates an example environment for connecting a first networkdomain to a second network domain via respective router(s) connected viaa network tunnel to route traffic through one or more first connectorsof the first network domain and/or through one or more second connectorsof the second network domain with virtual network instance (VNI) tags.

FIG. 4 illustrates an example service chain and an example flow throughthe service chain as discussed herein.

FIG. 5 illustrates an example border gateway protocol (BGP) largecommunity including three 4-byte sections indicating a global VNI tenantlabel, an encoded VNI type and VNI, and/or an originating router encodedinternet protocol (IP) address.

FIG. 6 illustrates a flow diagram of an example method for a routingdevice to encode and send a BGP advertisement including a BGP largecommunity encoded with at least a global VNI label and/or an originatingrouter IP address.

FIG. 7 illustrates a flow diagram of an example method for a routingdevice to receive and decode a BGP advertisement including a BGP largecommunity encoded with at least a global VNI label and/or an originatingrouter IP address.

FIG. 8 illustrates a flow diagram of an example method for a routingdevice to encode and send a BGP advertisement including one or moreencoded BGP large communities associated with each next hop node localto the routing device.

FIG. 9 illustrates a flow diagram of an example method for a firstrouting device in a first network domain to receive and decode a BGPadvertisement including one or more encoded BGP large communitiesassociated with each next hop local to a second routing device in asecond network domain, and further determining a route to send a datapacket from the first network domain to the second network domain.

FIG. 10 illustrates a flow diagram of an example method for a routingdevice to determine a packet flow configuration for sending a datapacket from a tenant endpoint, through a service chain, and to adestination endpoint.

FIG. 11 illustrates a flow diagram of another example method for arouting device to determine a packet flow configuration for sending adata packet from a tenant endpoint, through a service chain, and to adestination endpoint.

FIG. 12 illustrates a flow diagram of an example method for determiningand storing updated network configuration data for a network domain of amulti-domain network based on current network configuration data of thenetwork domain and an API request, configured to cause a routing deviceof the network domain to perform an operation, received at an APIserver.

FIG. 13 illustrates a flow diagram of another example method fordetermining and storing updated network configuration data for a networkdomain of a multi-domain network based on current network configurationdata of the network domain and an API request, configured to cause arouting device of the network domain to perform an operation, receivedat an API server.

FIG. 14 illustrates a flow diagram of an example method for a routingdevice to register with a service discovery system to utilize networkconfiguration data associated with a multi-domain network and identifynetwork nodes to establish network routes through the multi-domainnetwork using the network nodes.

FIG. 15 illustrates a flow diagram of an example method for a servicediscovery system to maintain a database including network configurationdata for a multi-domain network and handle requests, received fromvarious routing devices of the multi-domain network, to register withthe service discovery system and utilize the network configuration data.

FIG. 16 illustrates a computing system diagram illustrating aconfiguration for a data center that can be utilized to implementaspects of the technologies disclosed herein.

FIG. 17 is a computer architecture diagram showing an illustrativecomputer hardware architecture for implementing a server device that canbe utilized to implement aspects of the various technologies presentedherein.

DESCRIPTION OF EXAMPLE EMBODIMENTS

Overview

This disclosure describes method(s) for using global virtual networkinstance (VNI) labels (e.g., a multiprotocol label switching (MPLS)label, a virtual extensible local area network (VXLAN) label, a genericnetwork virtualization encapsulation (GENEVE) label, etc.) in amulti-domain network to advertise network configurations, route networkdata, and/or signal a service chain using a multi-tenant networkoverlay. The method includes determining that a first tenant node isassociated with a first router of a first network domain associated witha multi-domain network. Additionally, or alternatively, the methodincludes generating a first border gateway protocol (BGP) advertisementpacket including a first BGP large community. Additionally, oralternatively, the method includes encoding, into a first portion of thefirst BGP large community, a first global virtual network instance (VNI)label associated with the first tenant node. Additionally, oralternatively, the method includes encoding, into a second portion ofthe first BGP large community, a first address of a first tunnelendpoint associated with the first router. Additionally, oralternatively, the method includes sending the first BGP advertisementpacket to a second network domain associated with the multi-domainnetwork.

Additionally, or alternatively, the method includes receiving, at afirst router of a first network domain of a multi-domain network andfrom a second router of a second network domain of the multi-domainnetwork, a first border gateway protocol (BGP) advertisement packetincluding a first BGP large community. Additionally, or alternatively,the method includes decoding, from a first portion of the first BGPlarge community, a first global virtual network instance (VNI) labelcorresponding to a first tenant node associated with the second router.Additionally, or alternatively, the method includes decoding, from asecond portion of the first BGP large community, a first address of afirst tunnel endpoint associated with the second router. Additionally,or alternatively, the method includes storing, in a database associatedwith the first router, a mapping between the first global VNI label andthe first address of the first tunnel endpoint.

Additionally, or alternatively, the method includes identifying one ormore next hop nodes associated with a first router of a first networkdomain associated with a multi-domain network. Additionally, oralternatively, the method includes generating, for individual ones ofthe one or more next hop nodes, a border gateway protocol (BGP) largecommunity. Additionally, or alternatively, the method includesgenerating a BGP advertisement packet including, for the individual onesof the one or more next hop nodes, the BGP large community.Additionally, or alternatively, the method includes sending the BGPadvertisement packet to a second network domain associated with themulti-domain network.

Additionally, or alternatively, the method includes receiving, at afirst router of a first network domain associated with a multi-domainnetwork and from a second router of a second network domain associatedwith the multi-domain network, a first border gateway protocol (BGP)advertisement packet including one or more first BGP large communitiesassociated with one or more first next hop nodes associated with thesecond router. Additionally, or alternatively, the method includesreceiving, at the first router and from a third router of the secondnetwork domain, a second BGP advertisement packet including one or moresecond BGP large communities associated with one or more second next hopnodes associated with the third router. Additionally, or alternatively,the method includes receiving, at the first router and from a firsttenant node of the first network domain, a request to send a data packetto a second tenant node of the second network domain. Additionally, oralternatively, the method includes determining, by the first router andbased at least in part on the first BGP advertisement packet and thesecond BGP advertisement packet, a route for sending the data packetfrom the first tenant node to the second tenant node. Additionally, oralternatively, the method includes sending the data packet from thefirst router and to one of the second router or the third router basedat least in part on the route.

Additionally, or alternatively, the method includes receiving, at arouter associated with a first network domain of a multi-domain networkand from a traffic acquisition service, a request to send a data packetfrom a user endpoint and to a destination endpoint, the data packetincluding a primary global virtual network instance (VNI) labelassociated with the user endpoint. Additionally, or alternatively, themethod includes identifying, in a datastore associated with the firstnetwork domain and based at least in part on a traffic type associatedwith the data packet, a packet flow configuration associated with thedata packet, the packet flow configuration including one or moresecondary global VNI labels. Additionally, or alternatively, the methodincludes sending, based at least in part on the packet flowconfiguration, the data packet from the router and to a first servicenode associated with the multi-domain network. Additionally, oralternatively, the method includes receiving the data packet at therouter and from the first service node associated with the multi-domainnetwork. Additionally, or alternatively, the method includes sending,based at least in part on the packet flow configuration, the data packetfrom the router and to a second service node associated with themulti-domain network. Additionally, or alternatively, the methodincludes receiving the data packet at the router and from the secondservice node associated with the multi-domain network. Additionally, oralternatively, the method includes sending the data packet from therouter and to the destination endpoint.

Additionally, or alternatively, the method includes receiving, at arouter associated with a first network domain of a multi-domain networkand from a traffic acquisition service, a request to send a data packetfrom a user endpoint and to a destination endpoint, the data packetincluding a primary global virtual network instance (VNI) labelassociated with the user endpoint. Additionally, or alternatively, themethod includes identifying, in a datastore associated with the firstnetwork domain and based at least in part on a traffic type associatedwith the data packet, a packet flow configuration associated with thedata packet, the packet flow configuration including one or moresecondary global VNI labels. Additionally, or alternatively, the methodincludes sending, based at least in part on the packet flowconfiguration, the data packet from the router and to a first servicenode associated with the multi-domain network. Additionally, oralternatively, the method includes receiving the data packet at therouter and from the first service node associated with the multi-domainnetwork. Additionally, or alternatively, the method includes sending thedata packet from the router and to the destination endpoint.

Additionally, or alternatively, the method includes receiving anapplication programming interface (API) request associated with an APIserver of a first network domain of a multi-domain network.Additionally, or alternatively, the method includes determining that theAPI request corresponds to performance of an operation by a routerassociated with the first network domain, the router being configured toupdate network configurations for the first network domain.Additionally, or alternatively, the method includes identifying currentnetwork configurations for the first network domain in a datastoreassociated with the first network domain. Additionally, oralternatively, the method includes determining, based at least in parton the current network configurations and the operation, updated networkconfigurations for the first network domain. Additionally, oralternatively, the method includes storing, in the datastore, theupdated network configurations for the first network domain.

Additionally, or alternatively, the method includes receiving an APIrequest associated with an API server of a first network domain of amulti-domain network. Additionally, or alternatively, the methodincludes determining that the API request corresponds to performance ofan operation associated with the first network domain. Additionally, oralternatively, the method includes determining, based at least in parton current network configurations and the operation, updated networkconfigurations for the first network domain. Additionally, oralternatively, the method includes storing, in a datastore associatedwith the first network domain, the updated network configurations forthe first network domain.

Additionally, or alternatively, the method includes provisioning arouting device in a first network domain, wherein the first networkdomain includes a service discovery system that maintains networkconfiguration data for a multi-domain network that includes at least thefirst network domain and a second network domain. Additionally, oralternatively, the method includes sending, from the routing device, arequest to register with the service discovery system for use of thenetwork configuration data. Additionally, or alternatively, the methodincludes identifying, by the routing device and based at least in parton the network configuration data, network nodes in the multi-domainnetwork. Additionally, or alternatively, the method includesestablishing, partly by the routing device, network routes through themulti-domain network with the network nodes.

Additionally, or alternatively, the method includes receiving, at aservice discovery system of a first network domain that maintainsnetwork configuration data for a multi-domain network including thefirst network domain, an indication that a first routing device is beingprovisioned in the first network domain. Additionally, or alternatively,the method includes receiving, at the service discovery system and fromthe first routing device, a request to register with the servicediscovery system for use of the network configuration data.Additionally, or alternatively, the method includes identifying, by theservice discovery system and in a datastore that stores the networkconfiguration data, the network configuration data for the first networkdomain. Additionally, or alternatively, the method includes sending,from the service discovery system and to the first routing device, thenetwork configuration data for the first network domain, wherein thenetwork configuration data includes at least first configuration datafor establishing first network routes through the multi-domain networkwith first network nodes in the first network domain.

Additionally, the techniques described herein may be performed by asystem and/or device having non-transitory computer-readable mediastoring computer-executable instructions that, when executed by one ormore processors, performs the method described above.

Example Embodiments

Exterior gateway protocols may be employed to route communicationsbetween separate data centers, separate cloud services, and throughout adatacenter and to a desired tenant of a multi-tenant network. Forinstance, a border gateway protocol (BGP) may be utilized to exchangerouting and reachability information between the datacenters. However,to make this protocol cloud-native in a way which can be utilized bymultiple tenants, a service discovery must be performed. For example,BGP sessions are generally long-lived, and static, which is incompatiblewith operating in an ephemeral cloud environment. Additionally, asdeployment and operation of cloud services scale, if you lackautomation, organizations may have trouble operating a solution in ameaningful manner. For example, in a multi-tenant environment, eachtenant may want to execute their own routing control plane, allowingthem to inject and remove routes from their own networks dynamically.However, having to run your own set of BGP daemons at each ingressand/or egress point is challenging, and if a tenant is doing thisthemselves, it is a challenge that they cannot work around. While BGPcan locally maintain multiple paths for the same destination, thatinformation is only every locally significant as BGP will only tellpeers about the best path. For example, when advertising a path, thelocal information about available paths are typically lost. While recentadditions to BGP (e.g., BGP add path) look to mitigate this issue, theset of information required in a multi-tenant network overlay is notalways included.

In order to provide multi-tenant network isolation, traditionalarchitectures may be utilized, such as, for example, multiprotocol labelswitching (MPLS) and applications like MPLS virtual private networks(VPNs). One of the key requirements of these traditional solutions isthat they rely on an end-to-end network built and designed for thespecific application, which requires a tight coupling between theunderlay network and tenant traffic that rides on top of it. Forexample, customer traffic may be isolated through the use of a tenantlabel that is stacked on top of the underlay transport labels, and thelabels in most cases are locally significant to a given router. Thus,allocating a globally significant label per tenant would lessen some ofthe burden and allow for different types of underlay transport networks.However, given that labels in current architectures are not globallysignificant this is not possible.

Cloud-based Software-as-a-Service (SaaS) are also expanding and aresupporting endpoints. As these cloud-based services expand, devices willbegin to require specific cloud-based services as they are deployed, andas new technologies are developed, devices will need to support furthercloud-based services. However, there is a need for techniques to signala customer administrator's intent for which services their trafficshould pass through.

This disclosure describes techniques for a routing device (e.g., arouter, a route reflector, and/or a router cluster), provisioned in anetwork domain of a multi-domain computing resource network, to registerwith a service discovery system of the network domain for use of networkconfiguration data stored in a data store associated with the networkdomain and accessible by the routing device. In some examples, therouting device may be configured to utilize the network configurationdata to identify network nodes in the multi-domain network and/orestablish routes through the multi-domain network with the networknodes. Additionally, or alternatively, the network domain may include anapplication programming interface (API) server and the techniques mayfurther include receiving and processing API requests received from anadministrator of the network. In some examples, the API server mayreceive an API request and determine that the API request corresponds tothe performance of an operation by a routing device configured to updatenetwork configurations for the network domain. The API server may thenutilize current network configurations for the network domain and theoperation to be performed by the routing device to determine updatednetwork configurations for the network domain and store the updatednetwork configurations in the datastore, where they may be pushed toand/or accessed by the routing device. Additionally, or alternatively,the techniques may further include generating global VNI labels (e.g., amultiprotocol label switching (MPLS) label, a virtual extensible localarea network (VXLAN) label, a generic network virtualizationencapsulation (GENEVE) label, etc.) associated with tenant nodes in thenetwork domain and connected to the routing device, where the routingdevice may generate and send a BGP advertisement packet to one or moreadditional network domains of the multi-domain network. In someexamples, the BGP advertisement packet may include one or more BGP largecommunities having at least a first encoded portion indicating a globalVNI label of the tenant node and/or a second encoded portion indicatingan address of a tunnel endpoint of the routing device. Additionally, oralternatively, the BGP advertisement packet may be configured to includeadditional BGP large communities for each next hop node associated withthe routing device and local to the network domain. Additionally, oralternatively, the techniques may include utilizing one or moreadditional global VNI labels (secondary to the primary tenant VNI labelpreviously described) to generate packet flow configurations specific totraffic types of a data packet and used to signal a service chain forthe traffic type prior to routing the data packet to a destinationendpoint.

Take, for example, a first network domain of a multi-domain network thatincludes at least the first network domain and a second network domain.In some examples, the first network domain may include a datastoreand/or a service discovery system configured to maintain networkconfiguration data for the multi-domain network. Additionally, oralternatively, the second network domain may include a routing device, adatastore, and/or a service discovery system configured to maintainnetwork configuration data for the multi-domain network. In someexamples, a datastore and a service discovery system may be configuredas a single component or as separate components. Additionally, oralternatively, a routing device may be configured as a router and/or aroute reflector. Additionally, or alternatively, individual networkdomains of the multi-domain network may include any number of routingdevices (e.g., router(s) and/or route reflector(s)). Further, additionalnetwork domains may be included in the multi-domain network, and theindividual network domains may include additional network components andnot limited to the components described in this example. Additionally,or alternatively, individual network domains may include one or moreseparate tenants utilizing the associated computing resources of theindividual network domain.

An admin may provision or configure a routing device in the firstnetwork domain. An indication of the provisioning of the routing devicein the first network domain may be received at the service discoverysystem. Following the provisioning of the routing device, the routingdevice may come online and send a request to register with the servicediscovery system in the first network domain for use of the networkconfiguration data, for example. The service discovery system may thenidentify the network configuration data for the first network domainwhere the routing device has been configured. In some examples, theservice discovery system may identify the network configuration data inthe datastore. Once the network configuration data has been identified,the service discovery system may send the network configuration data tothe routing device. In some examples, the network configuration data mayinclude configuration data indicating network nodes in the multi-domainnetwork for establishing network routes through the multi-domainnetwork. In some examples, the indications of the network nodes may benetwork nodes in the multi-domain network and/or network nodes specificto the first network domain. Once the routing device receives thenetwork configuration data, the routing device may identify the networknodes and establish the network routes through the multi-domain networkwith the network nodes.

Once registered with the service discovery system, the routing devicemay be configured to periodically receive the network configurationdata, such as, for example, whenever a change is made to the networkconfiguration data of the multi-domain network. That is, the networkconfiguration data may further provide, to the routing deviceprovisioned in the first network domain (e.g., the first routingdevice), an indication of the routing device provisioned in the secondnetwork domain (e.g., the second routing device) that is registered withthe service discovery system. The first routing device and/or the secondrouting device may then establish an overlay network tunnel connectingthe first routing device and the second routing device. In someexamples, the overlay network tunnel may be configured as a bareUDPtunnel or any other network tunnel having load balancing capability ofdifferent networks. The first routing device may then identifyadditional network nodes associated with the second routing device basedon the network configuration data and may establish additional networkroutes through the multi-domain network with the additional networknodes. Additionally, or alternatively, the network configuration datamay further provide, to the first routing device, an indication that thesecond routing device has gone offline, or otherwise deregistered withthe service discovery system. In some examples, the first routing devicemay then remove the additional network routes through the multi-domainnetwork and/or the network tunnel connecting the first routing device tothe second routing device. That is, the first routing device may updatea routing table of the first network domain in which it is provisionedfollowing registration and/or deregistration of a second routing devicein the second network domain.

The service discovery system may be further configured to provideindications of health and/or performance associated with the networknodes and/or the network routes of the multi-domain network to a routingdevice. For example, the first routing device may send a request for ahealth check of the first network domain to the service discoverysystem. The service discovery system may be configured to determine thatone or more of the network routes are unreachable and/or performingbelow a threshold level of performance, and may send, to the firstrouting device, an indication that the one or more network routes isunreachable and/or performing below the threshold level of performance.In some examples, the first routing device may be configured to removethe one or more network routes and/or prioritize one or more separatenetwork routes over the one or more network routes that are unreachableand/or performing below the threshold level of performance.Additionally, or alternatively, the first routing device may send arequest for a performance check of the first network domain. The servicediscovery system may be configured to determine network performance dataassociated with the first network domain and may send the networkperformance data to the first routing device. In some examples, thenetwork performance data may indicate various performance metricsassociated with routing device(s), network nodes(s), and/or networkroute(s) associated with the first network domain, such as, for example,bandwidth usage of network node(s) and/or routing device(s), centralprocessing unit (CPU) usage of network node(s) and/or routing device(s),and/or a number of links available to network node(s) and/or routingdevice(s). In some examples, the first routing device may be configuredto make intelligent decisions using the network performance data, suchas, for example, establishing additional network routes, separate fromthe original network routes, through the multi-domain network using thenetwork nodes. For example, the additional network routes may beconfigured to reflect network performance data that is more favorablethan the network performance data associated with the original networkroutes (e.g., the network performance data received from the servicediscovery system in response to the performance check).

As previously mentioned, the first network domain may include additionalnetwork components, such as, for example, an application programminginterface (API) server. The API server may be configured to assist inautomation with the multi-domain network. In some examples, a networkadmin may utilize the API server to connect remote branch device(s) to anetwork domain of the multi-domain network. For example, a network adminassociated with the first network domain may send an API request to theAPI server to perform various operations and/or analyzed metricsassociated with the first network domain. Additionally, oralternatively, the API server may receive an API request from a networknode associated with the first network domain, such as, for example, anetwork connector node. The first routing device may be configured toupdate network configurations for the first network domain and the APIrequest may correspond to performance of an operation by the firstrouting device of the first network domain. In some examples, the APIserver may be configured to receive the API request and determine thatthe API request corresponds to the performance of the operation by thefirst routing device. The API server may then identify current networkconfigurations for the first network domain in the datastore associatedwith the first network domain. The API server may further be configuredto determine updated network configurations for the first network domainusing the current network configurations and the operation to beperformed by the routing device, and may store the updated networkconfigurations for the first network domain in the datastore. In someexamples, the API server may be configured to determine the updatednetwork configurations by identifying a change in the current networkconfigurations for the first network domain caused at least partly bythe performance of the operation. Once stored in the datastore, theupdated network configurations may be pushed to and/or received by thefirst routing device.

In some examples, a routing device may be configured to utilize theupdated network configurations in the datastore to perform variousnetwork operations associated with the API request. For example, thefirst routing device may be configured to generate and send a BGPadvertisement message, indicating the updated network configurations forthe first network domain, to an edge device in the second network domain(e.g., the second routing device). Additionally, or alternatively, aspreviously mentioned, the API request may be received at the API serverfrom a network connector node, and the first routing device may beconfigured to send the updated network configurations for the firstnetwork domain to the network connector node and/or establish one ormore network routes in association with the network connector node.

An API request may include one or more creating, reading, updating, anddeleting (CRUD) operations to be performed by a routing device and/oranother network component of the associated network domain. That is, theAPI request may correspond to a create, read, update, and/or deleteoperation to be performed in association with various network componentsof a network domain. Additionally, or alternatively, the routing deviceand/or other network component performing the operation may beconfigured to send, to a tenant of one or more tenants associated withthe first network domain and from which the API request was receivedand/or to an admin associated with the tenant, a global identifierassociated with the change that was made in association with theperformance of the operation. For example, the API request may include aCRUD operation instructing the first routing device to create, read,update, and/or delete a virtual routing and forwarding (VRF) associatedwith the first network domain, and following performance of the CRUDoperation, the routing device and/or the API server may be configured tosend, to the tenant, and indication of a global identifier of a newlycreated, deleted, updated, or previously existing VRF associated withthe first network domain. Additionally, or alternatively, the APIrequest may include a CRUD operation instructing the first routingdevice to create, read, update, and/or delete a network connector nodeassociated with the first network domain, and following performance ofthe CRUD operation, the routing device and/or the API server may beconfigured to send, to the tenant, and indication of a global identifierof a newly created, deleted, updated, or previously existing networkconnector node associated with the first network domain. Additionally,or alternatively, the API request may include a CRUD operationinstructing the first routing device to create, read, update, and/ordelete a network route for transmitting communications through one ormore network connector nodes associated with the first network domain,and following performance of the CRUD operation, the routing deviceand/or the API server may be configured to send, to the tenant, andindication of a global identifier of a newly created, deleted, updated,or previously existing network route associated with the first networkdomain.

In some examples, an API request may include a request for networkperformance data associated with one or more network connector nodesand/or one or more network routes associated with the first networkdomain. The first routing device may be configured to collect telemetrydata associated with the network to determine the performance data. Insome examples, the network performance data may include an indication ofnetwork performance associated with network connector nodes, such as,for example, reachability of the network connector nodes, bandwidthusage of the network connector nodes, CPU usage of the network connectornodes, and/or a number of links available to the network connectornodes. Additionally, or alternatively, the network performance data mayinclude an indication of the network route(s) associated with the firstnetwork domain and/or a preference associated with the network route(s).Additionally, or alternatively, the network performance data may includean indication of network performance associated with the change in thenetwork configurations associated with the first network domain causedat least partly by the performance of the operation.

As previously mentioned, the routing device(s) of a network domain maybe configured to generate global VNI labels associated with tenant nodesin the network domain and connected to the routing device. Such globalVNI labels may provide the benefits offered by a specific VNI (e.g., anMPLS network) without utilizing the specific VNI (e.g., an actual MPLSnetwork) to run an application. Instead, routing devices of separatenetwork domains of the multi-domain network may utilize network tunnels(e.g., configured in the network overlay) to connect to one anotherdirectly and support VNI advantages on top of the tunnels withoutrequiring the knowledge of the underlying network transport (e.g.,configured in the network underlay) which the network tunnels run on topof. In some examples, a routing device may generate and send a BGPadvertisement packet to one or more of the additional network domains ofthe multi-domain network. The BGP advertisement packet may include oneor more BGP large communities having one or more portions indicatingvarious global VNI labels. In some examples, a BGP large community mayinclude three separate 4-byte portions for encoding data.

Take, for example a first tenant node associated with a first routingdevice of a first network domain of the multi-domain network. The firstrouting device may be configured to determine that the first tenant nodeis connected to the first routing device (e.g., the first routing devicemay be responsible for routing communications to and from the firsttenant node) and may generate a first BGP advertisement packet includinga first BGP large community associated with the first tenant node. Insome examples, the BGP advertisement packet may be configured to includea BGP large community for each of the individual tenant nodes associatedwith the first routing device. The first routing device may then encodea first global VNI label associated with the first tenant node (e.g., auniversally unique identifier (UUID) of the first tenant node) into afirst portion of the BGP large community. Additionally, oralternatively, the first routing device may encode a first address of afirst network tunnel endpoint associated with the first routing deviceinto a second portion of the BGP large community. In some examples, thefirst address may be an Internet Protocol version 4 (IPv4) address orinclude a mapping to an Internet Protocol version 6 (IPv6) tunneladdress. Additionally, or alternatively, the first routing device mayencode an indication of the virtual network instance (VNI) type if thevirtual network being utilized into a third portion of the BGP largecommunity. In examples where the first address of the first networktunnel endpoint associated with the first routing device is an IPv6address, the encoded indication of the VNI type may indicate that thefirst address is an IPv6 address. Additionally, or alternatively, theencoded indication of the VNI type may include configuring one or moreof the 4-bytes in the third portion (or in any of the other portions ofthe BGP large community) as an indicator (e.g., an integer or any othervalue that may be mapped in a database) that may be used to look up acorresponding IPv6 tunnel address. This may be achieved by performing afirst lookup, based at least partly on the global VNI label associatedwith a tenant node indicating the UUID of the tenant node and/or the VNItype of the virtual network, and then performing a second lookup, basedat least partly on the indicator encoded into the third portion, todetermine the corresponding IPv6 address mapped to the indicator andassociated with the tenant node Additionally, or alternatively, it maybe assumed by the routing devices that the first address of the firstnetwork tunnel endpoint associated with the first routing device is anIPv4 address. Once one or more of the portions of the BGP largecommunity have been encoded, the first routing device may send the firstBGP advertisement packet to a second network domain (or any number ofadditional network domains) associated with the multi-domain network.

The routing devices may also be configured to decode any BGP largecommunities in BGP advertisement packets received from additionalnetwork domains and/or routing device(s). For example, the first routingdevice may receive a second BGP advertisement packet including a secondBGP large community from a second routing device associated with asecond network domain of the multi-domain network. That is, continuingfrom the example above, the first routing device may then decode thefirst portion of the second BGP large community including a secondglobal VNI label corresponding to a second tenant node associated withthe second routing device of the second network domain, the secondportion of the second BGP large community including a second address ofa second tunnel endpoint associated with the second routing device,and/or the third portion of the second BGP large community including anindication of a VNI type associated with the second network domainand/or an indication that the second address of the second tunnelendpoint is an IPv6 address. With the information from the second BGPlarge community decoded, the first routing device may then store, in thedatabase associated with the first routing device, a mapping between thesecond global VNI label, the second address of the second tunnelendpoint, and/or the VNI type associated with the second network domain.

With the first routing device of the first network domain having thesecond address of the second tunnel endpoint of the second routingdevice of the second network domain and/or the second routing device ofthe second network domain having the first address of the first tunnelendpoint of the first routing device of the first network domain, anetwork tunnel may be established between the first routing device andthe second routing device on top of the underlying network transport,where data may be routed to and/or from the first tunnel endpoint and tothe second tunnel endpoint and/or to and/or from the second tunnelendpoint and to the first tunnel endpoint allowing for the first tenantand the second tenant to send and/or receive communication data from oneanother.

Additionally, or alternatively, a routing device of a network domain ofthe multi-domain network may be configured to populate a BGPadvertisement packet with additional BGP large communities. In someexamples, an additional BGP large community may be included in a BGPadvertisement packet for each next hop node associated with the routingdevice and/or local to the network domain. The additional BGP largecommunities for each of the next hop nodes associated with the routingdevice may be encoded and/or decoded by the routing device using thetechniques described above with respect to the tenant nodes.Additionally, or alternatively, a routing device associated with anetwork domain may be configured to encode and/or decode network egressinformation associated with the network domain (e.g., bandwidthavailability, CPU availability, and/or priority associated with next hopnodes). By encoding the next local next hop nodes into additional BGPlarge communities, more advanced traffic balancing capabilities may berealized for the multi-domain network.

Take, for example, a first routing device in a first network domain of amulti-domain network having one or more first next hop nodes. The firstrouting device may be configured to identify the one or more first nexthop nodes and generate, for each of the first next hop nodes, a BGPlarge community. The first routing device may also be configured togenerate a BGP advertisement packet including each of the BGP largecommunities corresponding to the first next hop nodes. Once generated,the first routing device may send the BGP advertisement packet to asecond network domain of the multi-domain network and/or a secondrouting device associated with the second network domain.

With the next hop nodes advertised to additional routing devices ofseparate network domains, a routing device may be configured to makeintelligent routing decisions when routing traffic to and/or from atenant. For example, the first routing device may be configured toreceive a second BGP advertisement packet from a second routing deviceassociated with a second network domain of the multi-domain network. Thesecond BGP advertisement packet may include one or more second BGP largecommunities associated with one or more second next hop nodes associatedwith the second routing device. Additionally, or alternatively, thefirst routing device may be configured to receive a third BGPadvertisement packet from a third routing device associated with thesecond network domain. The third BGP advertisement packet may includeone or more third BGP large communities associated with one or morethird next hop nodes associated with the third routing device. The firstrouting device may be configured to store, in a routing information baseassociated with the first routing device, respective mappings betweenthe second routing device of the second network domain and the secondnext hop nodes and/or the third routing device of the second networkdomain and the third next hop nodes.

When the first routing device receives a request, from a first tenantnode of the first network domain, to send a data packet to a secondtenant node of the second network domain, the first routing device maybe configured to make a determination as to sending to the data packetto the second routing device or the third routing device, based at leastpartly on the first next hop nodes, the second next hop nodes and/or thethird next hop nodes. For example, the first routing device may beconfigured to determine a route for sending the data packet from thefirst tenant node and to the second tenant node. With the routedetermined, the first routing device may then send the data packet tothe second routing device or the third routing device, based on variousdeterminations described in greater detail below. While the belowexamples are provided, additional determinations may be used todetermine the route to transmit the data packet from the first tenantnode and to the second tenant node.

In some examples, the first routing device may determine that the numberof the second next hop nodes is greater than the number of the thirdnext hop nodes, and may configure the route to send the data packet overa network tunnel established between the first routing device and thesecond routing device.

Additionally, or alternatively, the first routing device may determinethat the data packet is associated with a first traffic flow type. Thefirst routing device may then determine that the second next hop nodesare associated with a second traffic flow type (e.g., unencryptedtraffic flow) and/or that the third next hop nodes are associated withthe first traffic flow type (e.g., encrypted traffic flow) that isdifferent from the first traffic flow type, and may configured the routeto send the data packet over a network tunnel established between thefirst routing device and the third routing device.

Additionally, or alternatively, the first routing device may determine,based on the second BGP large communities and/or the third BGP largecommunities, priorities associated with the second next hop nodes and/orthe third next hop nodes, respectively. In such an example, the firstrouting device may determine that the second next hop nodes have apriority that is greater than the priority of the third next hop nodes,and may configured the route to send the data packet over the networktunnel established between the first routing device and the secondrouting device.

Additionally, or alternatively, the first routing device may beconfigured to determine a first available bandwidth and/or CPU usageassociated with the second next hop nodes and/or a second availablebandwidth and/or CPU usage associated with the third next hop nodes. Thefirst routing device may then determine that the first availablebandwidth and/or CPU usage is greater than the second availablebandwidth and/or CPU usage, and may configured the route to send thedata packet over the network tunnel established between the firstrouting device and the second routing device.

As previously described, a routing device of a network domain of themulti-domain network may be connected to one or more connector nodes ofthe network domain. In some examples, a connector node may be configuredas a service, such as, for example, a cloud-delivered service, an inlinesecurity service, and/or a VPN service. In some examples, a service maycomprise a deep packet inspection (DPI) service, a cloud-deliveredfirewall (CDFW) service, a network address translation (NAT) service, asecure web gateway (SWG) service, a domain name service (DNS) layersecurity service, and/or a cloud access security broker (CASB) service.Additionally, or alternatively, the service may comprise a VPN serviceallowing one or more tenant endpoints to connect to the network domain,transmit data to additional tenant endpoints, and/or utilize one or moreservices offered by a connector node.

While primary global VNI labels are described above with respect toidentifying a tenant node (e.g., a universally unique identifier), arouting device may utilize secondary global VNI labels corresponding torespective connector nodes (potentially providing a service) todetermine a packet flow configuration for a data packet. In someexamples, a packet flow configuration may be configured as a servicechain to route a data packet to one or more services, offered byrespective connector nodes, before sending the data packet out to theinternet and/or a destination endpoint. In some examples, a networkadministrator may configure various packet flow configurations forvarious traffic flow types. The routing device may then translate such apacket flow configuration into secondary global VNI labels, stacked inan order corresponding to the packet flow configuration, such that adata packet is routed to the connector node(s) corresponding to thesecondary global VNI labels in the order specified by the packet flowconfiguration.

Take, for example, a first routing device associated with a firstnetwork domain of a multi-domain network. The first routing device mayreceive a request, from a connector node configured as a trafficacquisition service (e.g., a VPN allowing one or more tenant endpointsto connect to the network domain), to send a data packet from a tenantendpoint and to a destination endpoint. The data packet may include aprimary global VNI label associated with the tenant endpoint (e.g., theuniversally unique identifier). The first routing device may thendetermine a traffic type associated with the data packet, such as, forexample, DNS traffic, hypertext transfer protocol (HTTP) traffic, HTTPsecure (HTTPS) traffic, and the like. The first routing device may thenidentify a packet flow configuration associated with the data packetbased at least partly on the traffic type. As previously described, thepacket flow configuration may include one or more secondary global VNIlabels. The first routing device may then encapsulate the data packetwith the secondary global VNI labels in the order specified by thepacket flow configuration.

Once the data packet has been encapsulated with the secondary global VNIlabels, the routing device may then send the data packet through aservice chain as indicated by the secondary global VNI labels beforesending the data packet to the destination endpoint. This may beachieved by the first routing device may consuming the outermostsecondary global VNI label (e.g., the first of the secondary global VNIlabels) to send the data packet from the first routing device and to afirst service node (also referred to herein as a connector node)offering a first service. The first service node may then perform thefirst service on the data packet before returning the data packet to thefirst routing device. Once the first routing device has received thedata packet back from the first service node, the first routing devicemay then consume the next outermost secondary global VNI label (e.g.,the second of the secondary global VNI labels) to send the data packetfrom the first routing device and to a second service node offering asecond service. Similar to the first service node described above, thesecond service node may then perform the second service on the datapacket before returning the data packet to the first routing device.This process may be repeated any number of times corresponding to thenumber of secondary global VNI labels (e.g., 5 secondary global VNIlabels would indicate sending the data packet to 5 service nodesassociated with the secondary global VNI labels, respectively) beforesending the data packet from the first routing device and to thedestination endpoint.

In some examples, a service node indicated by a secondary global VNIlabel may not be provisioned in the first network domain, but ratherprovisioned in a second network domain of the multi-domain network thatis reachable by the first routing device. In such an example, the firstrouting device may send the data packet to a second routing device ofthe second network domain via a network tunnel (described in more detailabove), where the second routing device may send the data packet to theservice node and receive the data packet back from the service nodebefore returning the data packet to the first routing device.

As described herein, a computing-based and/or cloud-based solutionand/or service and/or connector can generally include any type ofresources implemented by virtualization techniques, such as containers,virtual machines, virtual storage, and so forth. Further, although thetechniques described as being implemented in data centers and/or a cloudcomputing network, the techniques are generally applicable for anynetwork of devices managed by any entity where virtual resources areprovisioned. In some instances, the techniques may be performed by aschedulers or orchestrator, and in other examples, various componentsmay be used in a system to perform the techniques described herein. Thedevices and components by which the techniques are performed herein area matter of implementation, and the techniques described are not limitedto any specific architecture or implementation.

The techniques described herein provide various improvements andefficiencies with respect to using global VNI labels in a multi-domainnetwork to route network data with a multi-tenant overlay. For instance,the techniques described herein may allow for the registration of arouting device at a service discovery system where network configurationdata may be utilized to identify network nodes and configure networkroutes from the routing device through the multi-domain network and toadditional routing devices registered with the service discovery system.By registering with the service discovery system, the multi-domainnetwork may be easily scalable without a network admin having toconfigure network routes. Additionally, the techniques described hereinmay provide an API server in respective network domains of amulti-domain network. The API server provides a network admin with theability to connect tenant endpoints to a network domain of amulti-domain network and/or perform various CRUD operations on variouscomponents associated with the network domain via API calls. Further,the techniques described herein may utilize BGP large communitiesencoded with tenant endpoint reachability information such as, forexample, a universally unique identifier of a tenant, an address of atunnel endpoint of a routing device associated with the tenant, VNI typeinformation, and/or address(es) of next hop node(s) associated with therouting device. By encoding information into BGP large communities,traditional BGP communities may be extended and used to discover andconnect edge devices of separate network domains. Additionally, byencoding the next local next hop nodes into additional BGP largecommunities, more advanced traffic balancing capabilities may berealized for the multi-domain network. In some examples, the advancetraffic balancing capabilities may include capabilities similar to thatof equal-cost multi-path (ECMP) techniques. Further, by stacking globalVNI labels, a network admin may be able to signal a service chain forvarious types of network traffic to a routing device.

Certain implementations and embodiments of the disclosure will now bedescribed more fully below with reference to the accompanying figures,in which various aspects are shown. However, the various aspects may beimplemented in many different forms and should not be construed aslimited to the implementations set forth herein. The disclosureencompasses variations of the embodiments, as described herein. Likenumbers refer to like elements throughout.

FIG. 1 illustrates an example environment 100 for a multi-domaincomputing resource network 102 including a data center 104 associatedwith a network domain utilizing a routing device 106 (or a fleet ofrouting device(s) 106) to establish network connections between varioustypes of networks, devices, and/or applications using one or moreconnectors 108 providing various services 110(1)-(N), where N is anyinteger greater than 1. The various types of networks, devices, and/orapplications the routing device 106 may connect to via the connector(s)may include, but are not limited to, a customer network 112, remoteaccess users 114, software defined wide-area network(s) (SD-WANs), suchas, SD-WAN branch A 116 and/or SD-WAN branch B 118, software as aservice (SaaS) application(s) 120, cloud network(s) 122, the internet124, and/or any number of additional data center(s) 126 having networknode(s) 128(1)-(N) (e.g., connector(s) 108 and/or routing device(s) 106.Additionally, or alternatively, the data center 104 may include one ormore inline security services 130. In some examples, the inline securityservice(s) 130 may also be configured as a connector node 108.

The data center 104 and/or the additional data center(s) 126 maycomprise various network components, such as, for example, networkswitch(es) (also referred to as node(s)) operating on physical servers.In some examples, physical server(s) may host one or more virtualmachines. Each virtual machine may be configured to execute one ofvarious operations and act as one or more virtual components for thecomputing resource network 102, such as, for example, computing-basedresources. In some examples, the physical server(s) may host any numberof virtual machines. In some examples, physical server(s) in thecomputing resource network 102 may host the various network componentsof the computing resource network 102, such as, for example, the routingdevice 106 and/or the connector node(s) 108.

Additionally, or alternatively, while not illustrated in FIG. 1 , thenetwork domain associated with the data center 104 may include adatastore and/or a service discovery system configured to maintainnetwork configuration data for the multi-domain computing resourcenetwork 102. Additionally, or alternatively, additional network domainsassociated with the additional data center(s) 126 may include a routingdevice 106, a datastore, and/or a service discovery system configured tomaintain network configuration data for the multi-domain computingresource network 102. In some examples, a datastore and a servicediscovery system may be configured as a single component or as separatecomponents. Additionally, or alternatively, individual network domainsof the multi-domain computing resource network 102 may include anynumber of routing devices 106 (e.g., router(s) and/or routereflector(s)). Additionally, or alternatively, individual networkdomains may include one or more separate tenants utilizing theassociated computing resources of the individual network domain.

An admin may provision or configure a routing device 106 in the networkdomain associated with the data center 104. An indication of theprovisioning of the routing device 106 in the network domain associatedwith the data center 104 may be received at the service discoverysystem. Following the provisioning of the routing device 106, therouting device 106 may come online and send a request to register withthe service discovery system in the network domain associated with thedata center 104 for use of the network configuration data, for example.The service discovery system may then identify the network configurationdata for the network domain where the routing device 106 has beenconfigured. In some examples, the service discovery system may identifythe network configuration data in the datastore. Once the networkconfiguration data has been identified, the service discovery system maysend the network configuration data to the routing device 106. In someexamples, the network configuration data may include configuration dataindicating network nodes (e.g., connector nodes 108) in the multi-domaincomputing resource network 102 for establishing network routes throughthe multi-domain computing resource network 102. In some examples, theindications of the network nodes may be network nodes in themulti-domain computing resource network 102 and/or network nodesspecific to the network domain associated with the data center 104. Oncethe routing device 106 receives the network configuration data, therouting device 106 may identify the network nodes and establish thenetwork routes through the multi-domain computing resource network 102with the network nodes.

Once registered with the service discovery system, the routing device106 may be configured to periodically receive the network configurationdata, such as, for example, whenever a change is made to the networkconfiguration data of the multi-domain computing resource network 102.That is, the network configuration data may further provide, to therouting device 106 provisioned in the network domain associated with thedata center 104 (e.g., the first routing device 106), an indication of arouting device 106 provisioned in an additional network domainassociated with an additional data center 126 (e.g., the second routingdevice 106) that is registered with the service discovery system. Insome examples, a node 128 associated with the additional data center 126may be configured as the second routing device 106.

The first routing device 106 and/or the second routing device 106 maythen establish an overlay network tunnel connecting the first routingdevice 106 and the second routing device 106. In some examples, theoverlay network tunnel may be configured as a bareUDP tunnel or anyother network tunnel having load balancing capability of differentnetworks. The first routing device 106 may then identify additionalnetwork nodes 128 associated with the second routing device 106 based onthe network configuration data and may establish additional networkroutes through the multi-domain computing resource network 102 with theadditional network nodes 128.

Additionally, or alternatively, the network configuration data mayfurther provide, to the first routing device 106, an indication that thesecond routing device 106 has gone offline, or otherwise deregisteredwith the service discovery system. In some examples, the first routingdevice 106 may then remove the additional network routes through themulti-domain computing resource network 102 and/or the network tunnelconnecting the first routing device 106 to the second routing device106. That is, the first routing device 106 may update a routing table ofthe network domain associated with the data center 104 in which it isprovisioned following registration and/or deregistration of a secondrouting device 106 in the additional network domain associated with theadditional data center 126.

The service discovery system may be further configured to provideindications of health and/or performance associated with the networknodes and/or the network routes of the multi-domain computing resourcenetwork 102 to a routing device 106. For example, the first routingdevice 106 may send a request for a health check of the network domainassociated with the data center 104 to the service discovery system. Theservice discovery system may be configured to determine that one or moreof the network routes are unreachable and/or performing below athreshold level of performance, and may send, to the routing device 106,an indication that the one or more network routes is unreachable and/orperforming below the threshold level of performance. In some examples,the routing device 106 may be configured to remove the one or morenetwork routes and/or prioritize one or more separate network routesover the one or more network routes that are unreachable and/orperforming below the threshold level of performance.

Additionally, or alternatively, the routing device 106 may send arequest for a performance check of the network domain associated withthe data center 104. The service discovery system may be configured todetermine network performance data associated with the network domainassociated with the data center 104 and may send the network performancedata to the routing device 106. In some examples, the networkperformance data may indicate various performance metrics associatedwith routing device(s) 106, network nodes(s) (e.g., connectors 108),and/or network route(s) associated with the network domain associatedwith the data center 104, such as, for example, bandwidth usage ofnetwork node(s) 108 and/or routing device(s) 106, central processingunit (CPU) usage of network node(s) 108 and/or routing device(s) 106,and/or a number of links available to network node(s) 108 and/or routingdevice(s) 106. In some examples, the routing device 106 may beconfigured to make intelligent decisions using the network performancedata, such as, for example, establishing additional network routes,separate from the original network routes, through the multi-domaincomputing resource network 102 using the network nodes. For example, theadditional network routes may be configured to reflect networkperformance data that is more favorable than the network performancedata associated with the original network routes (e.g., the networkperformance data received from the service discovery system in responseto the performance check).

As previously described, the routing device 106 may be configured as afleet of routing device(s) 106 comprising any number of routingdevice(s) 106. In some examples, the routing device(s) 106 may beconfigured as a router and/or a route reflector. Additionally, oralternatively, the routing device 106 may be configured to utilize theconnector(s) 108 as a bridge between the various service(s) 110. In someexamples, the service(s) 110 may be configured as, for example, acloud-delivered service, an inline security service 130, and/or a VPNservice. In some examples, a service 110 may comprise a deep packetinspection (DPI) service, a cloud-delivered firewall (CDFW) service, anetwork address translation (NAT) service, a secure web gateway (SWG)service, a domain name service (DNS) layer security service, and/or acloud access security broker (CASB) service. Additionally, oralternatively, the service 110 may comprise a VPN service allowing oneor more tenant endpoints to connect to the network domain, transmit datato additional tenant endpoints, and/or utilize one or more servicesoffered by a connector node.

As illustrated in FIG. 1 , the connectors 108 (also referred to hereinas network nodes) in the left portion of the data center 104 may includeservice(s) 110(1)-(4) configured as VPN services allowing tenantendpoints, such as, for example, the customer network 112, the remoteaccess user(s) 114, SD-WAN branch A 116, and/or SD-WAN branch B 118 toconnect to the multi-domain computing resource network 102.Additionally, or alternatively, the connectors 108 in the right portionof the data center 104 may include service(s) 110(5)-(N) configured ascloud-delivered service(s) allowing the data center 104 (also referredto herein as a network domain) to connect to the SaaS applications 120,cloud networks 122, the internet 124, and/or additional data center(s)126. In some examples, the routing device 106 may be configured toconnect to one or more node(s) 128, configured as additional routingdevice(s) 106, of the additional data center(s) 126 via an overlaynetwork tunnel.

Take, for example, one or more tenant endpoints associated with thecustomer network 112. The customer network 112 may connect to themulti-domain computing resource network 102 via a connector node 108providing a service 110(1) configured as a VPN service. The routingdevice 106 may handle all of the network routing to and from thecustomer network 112 via the VPN service 110(1) executing on theconnector node 108. In some examples, the tenant node of the customernetwork 112 (illustrated on the left side of FIG. 1 ) may wish to send adata packet to a destination endpoint associated with an additionalcustomer network 112 and/or remote access user 114 connected to one ormore additional data center(s) 126 of the multi-domain computingresource network 102 via one or more network node(s) 128 of theadditional data center 126, which may be configured as a connector node108 providing a service 110 also configured as a VPN service. Therouting device 106 may receive the data packet from the VPN service110(1) and route the data packet to an additional routing device 106(e.g., a node 128 of the additional data center 126 configured as arouting device 106) via a network tunnel connected by a first tunnelendpoint associated with the routing device 106 of the data center 104and a second tunnel endpoint associated with the routing device 106 ofthe additional data center 126. In some examples, the service 110(N) maybe configured as a first tunnel endpoint. The additional routing device106 may then transmit the data packet to the destination endpoint of theadditional customer network 112.

Additionally, or alternatively, the traffic flow type of the data packetmay require the data packet to be transmitted through one or moresecurity services prior to sending the data packet to the destinationendpoint. In some examples, the routing device 106 may send the datapacket to one or more of the security services 130, where the securityservice 130 may perform various security services, as described above,before returning the data packet back to the routing device 106. Asdescribed in more detail below with respect to FIG. 4 , the routingdevice may determine a packet flow configuration defining a servicechain of security service(s) 130 that the data packet is to be routed toprior to sending the data packet o the destination endpoint.

Additionally, or alternatively, a tenant endpoint associated with acustomer network 112, remote access user(s) 114, SD-WAN branch A 116,and/or SD-WAN branch B 118 may request to utilize a SaaS application120, access a cloud network 122, and/or the internet 124. In someexamples, the routing device 106 may receive the request via a connectornode 108 hosting a service 110(1)-(4) configured as a VPN service. Therouting device may then establish a connection from the tenant endpointassociated with the customer network 112, the remote access user(s) 114,the SD-WAN branch A 116, and/or the SD-WAN branch B 118, via the one ormore connector nodes 108 hosting the VPN service 110(1)-(4) and to oneor more connector node(s) 108 hosting a service 110(5)-(7) configured toprovide access to a SaaS application 120, a cloud network 122, and/orthe internet 124.

FIG. 2 illustrates an example environment 200 for establishing amulti-domain computing resource network 102 that connects a firstnetwork domain (e.g., network domain A 202), having a first routercluster (e.g., router cluster A 204), a first application programminginterface (API) server (e.g., API server A 206), and a first key/valuedatastore (e.g., datastore cluster A 208) storing first networkconfiguration data (e.g., network A configuration 210), to a secondnetwork domain (e.g., network domain B 212), having a second routercluster (e.g., router cluster B 214), a second API server (e.g., APIserver B 216, and a second key/value datastore (e.g., datastore clusterB 218) storing second network configuration data (e.g., network Bconfiguration 220).

In some examples, the network domain A 202 may include a servicediscovery system configured to maintain the network A configuration data210 for the multi-domain computing resource network 102. In someexamples, datastore cluster A 208 may be configured as the servicediscovery system. Additionally, or alternatively, the datastore clusterA 208 and the service discovery system may be configured as separatecomponents. Additionally, or alternatively, network domain B 212 mayinclude a service discovery system configured to maintain network Bconfiguration data for the multi-domain computing resource network 102.In some examples, datastore cluster B 218 may be configured as theservice discovery system. Additionally, or alternatively, the datastorecluster A 218 and the service discovery system may be configured asseparate components. Additionally, or alternatively, individual networkdomains 202, 212 of the multi-domain computing resource network 102 mayinclude any number of routing devices (e.g., router(s) and/or routereflector(s)) included in respective router cluster(s) 204, 214.Additionally, or alternatively, the individual network domains 202, 212may include one or more separate tenants utilizing the associatedcomputing resources of the individual network domain 202, 212.

An admin may provision or configure a router of router cluster A 204 inthe network domain A 202. An indication of the provisioning associatedwith the router cluster A 204 in the network domain A 202 may bereceived at the service discovery system. Following the provisioning ofthe router cluster A 204, the router cluster A 204 may come online andsend a request to register with the service discovery system in thenetwork domain A 202 for use of the network A configuration data 210,for example. The service discovery system may then identify the networkA configuration data 210 for the network domain A 202 where the routercluster A 204 has been configured. In some examples, the servicediscovery system may identify the network A configuration data 210 inthe datastore cluster A 208. Once the network A configuration data 210has been identified, the service discovery system may send the network Aconfiguration data 210 to the router cluster A 204.

In some examples, the network A configuration data 210 may includeconfiguration data indicating connector nodes (e.g., connector node A222 and/or connector node B 224) in the multi-domain computing resourcenetwork 102 for establishing network routes through the multi-domaincomputing resource network 102. In some examples, the indications of theconnector nodes may be connector nodes in the multi-domain computingresource network 102 (e.g., connector node A 222 and/or connector node B224) and/or connector nodes specific to the network domain A 202 (e.g.,connector node A 222). Once the router cluster A 204 receives thenetwork A configuration data 210, the router cluster A 204 may identifyconnector node A 222 and establish a network overlay connector 226(1)between the router cluster A 204 and the connector node A 222 forestablishing routes through the multi-domain computing resource network102 with the connector node A 222. Additionally, or alternatively, therouter cluster B 214 may receive network B configuration data 220 andmay identify connector node B 224 and establish a network overlayconnector 226(2) between the router cluster B 214 and the connector nodeB 224 for establishing routes through the multi-domain computingresource network 102.

Once registered with the service discovery system, the router cluster A204 may be configured to periodically receive the network Aconfiguration data 210, such as, for example, whenever a change is madeto the network A configuration data 210 and/or the network Bconfiguration data 220 of the multi-domain computing resource network102. That is, the network A configuration data 210 may further provide,to the router cluster A 204, an indication of a router cluster B 214provisioned in network domain B 212 that is registered with the servicediscovery system.

The router cluster A 204 and/or the router cluster B 214 may thenestablish an overlay network tunnel 228 connecting the router cluster A204 and the router cluster B 214. In some examples, the network tunnel228 may be configured as a bareUDP tunnel or any other network tunnelhaving load balancing capability of different networks. The routercluster A 204 may then identify additional network nodes, such asconnector node B 224 associated with the router cluster B 214 based onthe network A configuration data 210 and may establish additionalnetwork routes through the multi-domain computing resource network 102with the connector node B 224.

Additionally, or alternatively, the network configuration data mayfurther provide, to the router cluster A 204, an indication that therouter cluster B 214 has gone offline, or otherwise deregistered withthe service discovery system. In some examples, the router cluster A 204may then remove the additional network routes through the multi-domaincomputing resource network 102 and/or the network tunnel 228 connectingthe router cluster A 204 to the router cluster B 214. That is, therouter cluster A 204 may update a routing table, such as, for example,VRF A 230 of the network domain A 202 in which it is provisionedfollowing registration and/or deregistration of the router cluster B 214in the network domain B 212. Additionally, or alternatively, in exampleswhere a single router of router cluster B 214 has registered and/orderegistered with the service discovery system, the remaining routers inrouter cluster B 212 may update a routing table, such as, VRF B 232 ofthe network domain B 212.

An API server 206, 216 may be configured to assist in automation withthe multi-domain computing resource network 102. In some examples, anetwork admin may utilize an API server 206, 216 to connect remotebranch device(s) to a network domain 202, 212 of the multi-domaincomputing resource network 102. For example, a network admin associatedwith the network domain A 202 may send an API request to API server A206 to perform various operations and/or analyzed metrics associatedwith the network domain A 202. Additionally, or alternatively, APIserver A 206 may receive an API request from a connector node associatedwith the network domain A 202, such as, for example, connector node A222. In some examples, a connector node may be executing a service 234,such as, for example, the one or more service(s) 110 as described withrespect to FIG. 1 . The router cluster A 204 may be configured to updatenetwork A configuration data 210 for the network domain A 202 and theAPI request may correspond to performance of an operation by the routercluster A 204 of the network domain A 202. In some examples, the APIserver A 206 may be configured to receive the API request and determinethat the API request corresponds to the performance of the operation bya routing device associated with router cluster A 204. The API server A206 may then identify current network A configuration data 210 for thenetwork domain A 202 in the datastore cluster A 208. The API server A206 may further be configured to determine updated network Aconfiguration data 210 for the network domain A 202 using the currentnetwork A configuration data 210 and the operation to be performed byrouter cluster A 204, and may store the updated network A configurationdata 210 for the network domain A 202 in the datastore cluster A 208. Insome examples, API server A 206 may be configured to determine theupdated network A configuration data 210 by identifying a change in thecurrent network A configuration data 210 for the network domain A 202caused at least partly by the performance of the operation. Once storedin the datastore cluster A 208, the updated network A configuration data210 may be pushed to and/or received by router cluster A 204.

In some examples, a router cluster 204, 214 may be configured to utilizeupdated network configuration data 210, 220 in a datastore cluster 208,218 to perform various network operations associated with the APIrequest. For example, router cluster A 204 may be configured to generateand send a BGP advertisement message, indicating the updated network Aconfiguration data 210 for the network domain A 202, to an edge devicein the network domain B (e.g., a routing device included in routercluster B 214). Additionally, or alternatively, as previously mentioned,the API request may be received at API server A 204 from networkconnector node A 222, and the router cluster A 204 may be configured tosend the updated network A configuration data 210 for the network domainA 202 to network connector node A 222 and/or a network overlay connector226(1) in association with network connector node A 222.

An API request may include one or more creating, reading, updating, anddeleting (CRUD) operations to be performed by a routing deviceassociated with a router cluster 204, 214 and/or another networkcomponent of the associated network domain 202, 212. That is, the APIrequest may correspond to a create, read, update, and/or deleteoperation to be performed in association with various network componentsof a network domain 202 212. Additionally, or alternatively, the routercluster 204, 214 and/or other network component performing the operationmay be configured to send, to a tenant of one or more tenants associatedwith the network domain A 202 and from which the API request wasreceived and/or to an admin associated with the tenant, a globalidentifier associated with the change that was made in association withthe performance of the operation.

For example, the API request may include a CRUD operation instructingrouter cluster A 204 to create, read, update, and/or delete a virtualrouting and forwarding (VRF) (e.g., VRF A 230) associated with networkdomain A 202, and following performance of the CRUD operation, therouter cluster A 204 and/or the API server A 206 may be configured tosend, to the tenant, and indication of a global identifier of a newlycreated, deleted, updated, or previously existing VRF A 230 associatedwith network domain A 202. Additionally, or alternatively, the APIrequest may include a CRUD operation instructing router cluster A 204 tocreate, read, update, and/or delete network connector node A 222associated with network domain A 202, and following performance of theCRUD operation, the router cluster A 204 and/or the API server A 206 maybe configured to send, to the tenant, and indication of a globalidentifier of a newly created, deleted, updated, or previously existingconnector node A 222 associated with network domain A 202. Additionally,or alternatively, the API request may include a CRUD operationinstructing the first routing device to create, read, update, and/ordelete a network route for transmitting communications through connectornode A 222 via the overlay connector 226(1), and following performanceof the CRUD operation, router cluster A 204 and/or the API server A 206may be configured to send, to the tenant, and indication of a globalidentifier of a newly created, deleted, updated, or previously existingnetwork route associated with network domain A 202.

In some examples, an API request may include a request for networkperformance data associated with one or more connector nodes 222, 224and/or one or more network routes associated with network domain A 202.Router cluster A 204 may be configured to collect telemetry dataassociated with network domain A 202 to determine the performance data.In some examples, the network performance data may include an indicationof network performance associated with connector node A 222, such as,for example, reachability of connector node A 222, bandwidth usage ofconnector node A 222, CPU usage of connector node A 222, and/or a numberof links available to connector node A 222. Additionally, oralternatively, the network performance data may include an indication ofthe network route(s) associated with the network domain A 202 and/or apreference associated with the network route(s). Additionally, oralternatively, the network performance data may include an indication ofnetwork performance associated with the change in the network Aconfiguration data 210 associated with network domain A 202 caused atleast partly by the performance of the operation.

FIG. 3 illustrates an example environment for connecting a first networkdomain (e.g., network domain A 202) to a second network domain (e.g.,network domain B 212) via respective routing device(s) (e.g., routingdevice A 302 and/or routing device B 304) connected via one or morenetwork tunnel(s) (e.g., network tunnel A 306 and/or network tunnel B308) connecting the routing device(s) 302, 304 to a secure networkbackbone 310 to route traffic through one or more first connectors312(1)-(N) of the network domain A 202 and/or through one or more secondconnectors 314(1)-(N) of the network domain B 212 with VNI tags (e.g.,MPLS, VXLAN, GENEVE, etc.). In some examples, routing device A 302 maybe configured as a single routing device of the router cluster A 204 androuting device B 304 may be configured as a single routing device of therouter cluster B 214, as described with respect to FIG. 2 .

The routing device(s) 302, 304 of a network domain 202, 212 may beconfigured to generate global VNI labels associated with tenant nodes inthe network domain 202, 212 and connected to the routing device 302, 304via one or more connector(s) 312, 314. Such global VNI labels mayprovide the benefits offered by a specific VNI (e.g., an MPLS network)without utilizing the specific VNI (e.g., an actual MPLS network) to runan application. Instead, routing devices 302, 304 of separate networkdomains 202, 212 of the multi-domain computing resource network 102 mayutilize network tunnels 306, 308 (e.g., configured in the networkoverlay) to connect to one another directly and support VNIs on top ofthe network tunnels 306, 308 without requiring the knowledge of theunderlying network transport (e.g., configured in the network underlay)which the network tunnels 306, 308 run on top of. In some examples,routing device A 302 may generate and send a BGP advertisement packet tonetwork domain B 212 of the multi-domain computing resource network 102.The BGP advertisement packet may include one or more BGP largecommunities having one or more portions indicating various global VNIlabels. In some examples, a BGP large community may include threeseparate 4-byte portions for encoding data to establish the networktunnels 306, 308 and transmit data between network domain A 202 andnetwork domain B 212. In some examples, the data may include an addressof a tunnel endpoint associated with network tunnel A 306 and/or networktunnel B 308. The BGP large communities are described in more detailwith respect to FIG. 5 . In some examples, the global VNI labels may beconfigured to create a network flow configuration indicating a chain ofservice(s) hosted by connector node(s) 312, 314 that a data packet isrequired to pass through before being routed to a destination endpoint.Examples of a service chain are described in more detail with respect toFIG. 4 .

Once routing device A 302 of the network domain A 202 knows the addressof the tunnel endpoint of network tunnel B 308 connected to the routingdevice B 304 of network domain B 212 and/or routing device B 304 ofnetwork domain B 212 knows the address of the tunnel endpoint of networktunnel A 306 connected to routing device A 302 of network domain A 202,a connection may be established between network tunnel A 306 and networktunnel B 308 via the secure network backbone 310 of the multi-domaincomputing resource network 102 on top of the underlying networktransport, where data may be routed to and/or from the tunnel endpointof network tunnel A 306 and to the tunnel endpoint of network tunnel B308 and/or to and/or from the tunnel endpoint of network tunnel B 308and to the tunnel endpoint of network tunnel A 306 allowing for a firsttenant endpoint associated with network domain A 302 and a second tenantendpoint associated with network domain B 212 to send and/or receivecommunication data from one another.

Additionally, or alternatively, a routing device 302, 304 of a networkdomain 202, 212 of the multi-domain computing resource network 102 maybe configured to populate a BGP advertisement packet with additional BGPlarge communities. In some examples, an additional BGP large communitymay be included in a BGP advertisement packet for each next hop node(e.g., connectors 312, 314) associated with a routing device 302, 304and/or local to the network domain 202, 212. The additional BGP largecommunities for each of the next hop nodes associated with a routingdevice 302, 304 may be encoded and/or decoded by the routing device 302,304 using the techniques described with respect FIG. 5 . Additionally,or alternatively, a routing device 302, 304 associated with a networkdomain 202, 212 may be configured to encode and/or decode network egressinformation associated with the network domain 202, 212 (e.g., bandwidthavailability, CPU availability, and/or priority associated with next hopnodes).

Take, for example, a routing device A 302 in network domain A 202 havingone or more next hop nodes (e.g., connectors 312). For example, therouting device A 302 may comprise 6 connectors 312 (although any numberof connectors may be contemplated). The routing device A 302 may beconfigured to identify the one or more next hop nodes and generate, foreach of the next hop nodes, a BGP large community. The routing device A302 may also be configured to generate a BGP advertisement packetincluding each of the BGP large communities corresponding to the 6 nexthop nodes. Once generated, the routing device A 302 may send the BGPadvertisement packet to network domain B 212 and/or routing device B 304associated with network domain B 212.

While not illustrated in FIG. 3 , network domain B 212 may comprisemultiple instances of routing device B 304 (e.g., first routing device B304 and/or second routing device B 304), such as, for example, routercluster B 214 as described with respect to FIG. 2 . With the next hopnodes advertised to additional routing devices 302, 304 of separatenetwork domains 202, 212, a routing device 302, 304 may be configured tomake intelligent routing decisions when routing traffic to and/or from atenant. For example, routing device A 302 may be configured to receive afirst BGP advertisement packet from first routing device B 304associated with network domain B 212. The first BGP advertisement packetmay include one or more first BGP large communities associated with oneor more first next hop nodes (for example, 3 connector node(s)314(1)-(3)) associated with first routing device B 304. Additionally, oralternatively, routing device A 302 may receive a second BGPadvertisement packet from a second routing device B 304 associated withnetwork domain B 212. The second BGP advertisement packet may includeone or more second BGP large communities associated with one or moresecond next hop nodes (for example, 5 connector node(s) 314(1)-(5))associated with the second routing device B 304. Routing device A 302may be configured to store, in a database (e.g., database cluster 208 asdescribed with respect to FIG. 2 ), such as, for example, a routinginformation base associated with routing device A 302, respectivemappings between the first routing device B 304 of network domain B 212and the first next hop nodes and/or the second routing device B 304 ofnetwork domain B 212 and the second next hop nodes.

When routing device A 302 receives a request, from a first tenant nodeassociated with network domain A 202, to send a data packet to a secondtenant node associated with network domain B 212, the routing device A302 may be configured to make a determination as to sending to the datapacket to the first routing device B 304 or the second routing device B304, based at least partly on the first next hop nodes and/or the secondnext hop nodes. For example, routing device A 302 may be configured todetermine a route for sending the data packet from the first tenant nodeand to the second tenant node. With the route determined, routing deviceA 302 may then send the data packet to the first routing device B 304 orthe second routing device B 304, based on various determinationsdescribed in greater detail below. While the below examples areprovided, additional determinations may be used to determine the routeto transmit the data packet from the first tenant node and to the secondtenant node.

In some examples, routing device A 302 may determine that the number ofthe first next hop nodes (e.g., 5 connectors 314(1)-(5)) associated withthe first router B 304 is greater than the number of the second next hopnodes (e.g., 3 connectors 314(1)-(3) associated with the second router B304, and may configure the route to send the data packet over networktunnel A 306 and network tunnel B 308 established between routing deviceA 302 and the first routing device B 304.

Additionally, or alternatively, routing device A 302 may determine thatthe data packet is associated with a first traffic flow type. Routingdevice A 302 may then determine that the first next hop nodes associatedwith first router B 304 are associated with a second traffic flow type(e.g., unencrypted traffic flow) and/or that the second next hop nodesassociated with second router B 304 are associated with the firsttraffic flow type (e.g., encrypted traffic flow) that is different fromthe first traffic flow type, and may configured the route to send thedata packet from routing device A 302 and to the second routing device B304.

Additionally, or alternatively, routing device A 302 may determine,based on the first BGP large communities and/or the second BGP largecommunities, priorities associated with the first next hop nodes and/orthe second next hop nodes, respectively. In such an example, routingdevice A 302 may determine that the first next hop nodes have a prioritythat is greater than the priority of the second next hop nodes, and mayconfigure the route to send the data packet from routing device A 302and to the second routing device B 304.

Additionally, or alternatively, routing device A 302 may be configuredto determine a first available bandwidth and/or CPU usage associatedwith the first next hop nodes associated with the first router B 304and/or a second available bandwidth and/or CPU usage associated with thesecond next hop nodes associated with the second router B 304. Routingdevice A 302 may then determine that the first available bandwidthand/or CPU usage is greater than the second available bandwidth and/orCPU usage, and may configure the route to send the data packet fromrouting device A 302 and to the first routing device B 304.

FIG. 4 illustrates an example service chain 400 and an example flowwhich a router 402 may transmit a data packet received from a tenantendpoint 404 through the service chain 400 and to a destinationendpoint, such as, for example, the internet 406 as discussed herein. Insome examples, a master node 420 may be configured to route the datapacket from the service chain 400 and to the destination endpoint. Insome examples, router 402 may be configured as a single router 402, arouter cluster 204, 214 as described with respect to FIG. 2 , and/orseparate routing devices 302, 304 in separate network domains asdescribed with respect to FIG. 3 . As illustrated, the circular“connector” nodes of FIG. 4 (e.g., 408-418) may be configured asconnector nodes 108, 222, 224, 312, and/or 314 as described with respectto FIGS. 1-3 .

A router 402 of a network domain of the multi-domain computing resourcenetwork 102 may be connected to one or more connector nodes 408-418 ofthe network domain. In some examples, a connector node 408-418 may beconfigured as a service. In some examples, a connector may be configuredas a secure socket layer (SSL) service connector 408, a deep packetinspection (DPI) service connector 410, a cloud-delivered firewall(CDFW) service connector 412, a domain name service (DNS) securityconnector 414, a secure web gateway (SWG) service connector 416, and/ora network address translation (NAT) service connector 418. Additionally,or alternatively, the SSL connector 408 may be configured as any VPNservice allowing one or more tenant endpoints to connect to the networkdomain, transmit data to additional tenant endpoints, and/or utilize oneor more services offered by a connector node 410-418.

While primary global VNI labels are previously described with respect toidentifying a tenant endpoint (e.g., a universally unique identifier), arouter 402 may utilize secondary global VNI labels corresponding torespective connectors (providing a service) to determine a packet flowconfiguration for a data packet. In some examples, a packet flowconfiguration may be configured as a service chain to route a datapacket to one or more services, offered by respective connector nodes,before sending the data packet out to the internet and/or a destinationendpoint. In some examples, a network administrator may configurevarious packet flow configurations for various traffic flow types. Therouter 402 may then translate such a packet flow configuration intosecondary global VNI labels, stacked in an order corresponding to thepacket flow configuration, such that a data packet is routed to theconnector(s) corresponding to the secondary global VNI labels in theorder specified by the packet flow configuration.

Take, for example, a router 402 associated with a network domain of amulti-domain computing resource network 102. The router 402 may receivea request, from a connector node configured as a traffic acquisitionservice (e.g., a VPN allowing one or more tenant endpoints to connect tothe network domain), such as, for example, SSL connector 408, to send adata packet from a tenant endpoint and to a destination endpoint. Thedata packet may include a primary global VNI label associated with thetenant endpoint (e.g., the universally unique identifier). The router402 may then determine a traffic type associated with the data packet,such as, for example, DNS traffic, hypertext transfer protocol (HTTP)traffic, HTTP secure (HTTPS) traffic, and the like. The router 402 maythen identify a packet flow configuration associated with the datapacket based at least partly on the traffic type. As previouslydescribed, the packet flow configuration may include one or moresecondary global VNI labels. The router 402 may then encapsulate thedata packet with the secondary global VNI labels in the order specifiedby the packet flow configuration.

Once the data packet has been encapsulated with the secondary global VNIlabels, the router 402 may then send the data packet through a servicechain 400 as indicated by the secondary global VNI labels before sendingthe data packet to the destination endpoint. This may be achieved by therouter 402 consuming the outermost secondary global VNI label (e.g., thefirst of the secondary global VNI labels) to send the data packet fromthe router 402 and to a first connector (also referred to herein as anetwork node and/or service node) offering a first service. The firstservice node may then perform the first service on the data packetbefore returning the data packet to the router 402. Once the router 402has received the data packet back from the first connector, the router402 may then consume the next outermost secondary global VNI label(e.g., the second of the secondary global VNI labels) to send the datapacket from the router 402 and to a second connector offering a secondservice. Similar to the first connector described above, the secondconnector may then perform the second service on the data packet beforereturning the data packet to the router 402. This process may berepeated any number of times corresponding to the number of secondaryglobal VNI labels (e.g., 5 secondary global VNI labels would indicatesending the data packet to 5 connectors associated with the secondaryglobal VNI labels, respectively) before sending the data packet from therouter 402 to the master node 410, and/or the destination endpoint(e.g., 406).

In some examples, a connector indicated by a secondary global VNI labelmay not be provisioned in a first network domain of the multi-domaincomputing resource network in which the router 402 is provisioned, butrather provisioned in a second network domain of the multi-domaincomputing resource network that is reachable by the router 402. In suchan example, the router 402 may send the data packet to an additionalrouting device (e.g., an additional router 402) of the second networkdomain via a network tunnel, such as, for example, network tunnel 228 asdescribed with respect to FIG. 2 , where the additional routing devicemay send the data packet to the connector in the second network domainand receive the data packet back from the connector before returning thedata packet to the router 402 in the first network domain via thenetwork tunnel.

A customer utilizing the multi-domain computing resource network 102 maywish to route different types of tenant traffic through differentservices prior to delivering the traffic at a destination endpoint. Insome examples, the customer may wish to have a first traffic flow type,such as, for example, DNS traffic, to go through a DPI service 410, aCFW service 412, a DNS security service 414, a SWG service 416, andfinally, out to the destination endpoint, such as, for example, theinternet 406 via a NAT service 418. As such, an administrative userassociated with the customer may access a dashboard associated with thenetwork 102 and configure a packet flow configuration for the firsttraffic flow type. The packet flow configuration is then translated intoa set of tags, such as, global VNI labels, that are then applied to thetenant traffic at a traffic acquisition point, such as, for example, theSSL connector 408. In some examples, the tenant traffic may beencapsulated by individual labels in an order determined by the packetflow configuration (e.g., the following order DPI service 410, CFWservice 412, DNS security service 414, SWG service 416, and lastly NATservice 418). Additionally, or alternatively, this packet flowconfiguration may be stored in a datastore associated with the router402 for future use of routing additional tenant traffic.

An example of the traffic flow indicated by the packet flowconfiguration described above is depicted in FIG. 4 by the flow arrowswith the dashed lines. Once the router 402 receives the tenant trafficfrom the SSL connector 408, the router 402 may identify the firstservice indicated by the global VNI labels and send the packet to theDPI connector 410. Once the DPI service is performed on the tenanttraffic, the tenant traffic is returned to the router 402. Next, therouter 402 may identify the second service indicated by the global VNIlabels and send the packet to the CDFW connector 412. Once the CDFWservice is performed on the tenant traffic, the tenant traffic isreturned to the router 402. Next, the router 402 may identify the thirdservice indicated by the global VNI labels and send the packet to theDNS connector 414. Once the DNS security service is performed on thetenant traffic, the tenant traffic is returned to the router 402. Next,the router 402 may identify the fourth service indicated by the globalVNI labels and send the packet to the SWG connector 416. Once the SWGservice is performed on the tenant traffic, the tenant traffic isreturned to the router 402. And finally, the router 402 may identify thefifth and last service indicated by the global VNI labels and send thepacket to the NAT connector 418. Once the NAT service is performed onthe tenant traffic, the tenant traffic is returned to the router 402.Additionally, or alternatively, the tenant traffic may be sent to themaster node 420 associated with the network domain prior to sending thetenant traffic to the destination endpoint (e.g., the internet 406).

While the example packet flow configuration is provided, any number ofpacket flow configurations may be provided specific to additionaltraffic types (e.g., HTTP, HTTPS, etc.) and/or users associated with thetenant (e.g., internet technology users, general users, managers,administrators, etc.).

FIG. 5 illustrates an example border gateway protocol (BGP) largecommunity 500 including a first 4-byte portion 502, a second 4-byteportion 504, and/or a third 4-byte portion 506. In some examples, theportions 502, 504, and/or 506 of the BGP large community 500 mayindicate a global VNI tenant label 508, an encoded VNI type and VNI 510,and/or an originating router encoded internet protocol (IP) address 512.

As described with respect to FIGS. 1-4 , the routing device(s) of anetwork domain may be configured to generate global virtual networkinstance (VNI) labels (e.g., MPLS, VXLAN, GENEVE, etc.) associated withtenant nodes in the network domain and connected to the routing device.Such global VNI labels may provide the benefits offered by a specificVNI (e.g., an MPLS network) without utilizing the specific VNI (e.g., anactual MPLS network) to run an application. Instead, routing devices ofseparate network domains of the multi-domain network may utilize networktunnels, such as, for example, network tunnel 228 as described withrespect to FIG. 2 , (e.g., configured in the network overlay) to connectto one another directly and support VNI advantages on top of the tunnelswithout requiring the knowledge of the underlying network transport(e.g., configured in the network underlay) which the network tunnels runon top of. In some examples, a routing device may generate and send aBGP advertisement packet to one or more of the additional networkdomains of the multi-domain network. The BGP advertisement packet mayinclude one or more BGP large communities 500 having one or moreportions 502, 504, and/or 506 indicating various global VNI labels,addresses, and/or indications. In some examples, a BGP large communitymay include three separate 4-byte portions for encoding data.

Take, for example a first tenant node associated with a first routingdevice of a first network domain of the multi-domain computing resourcenetwork 102. The first routing device may be configured to determinethat the first tenant node is connected to the first routing device(e.g., the first routing device may be responsible for routingcommunications to and from the first tenant node) and may generate afirst BGP advertisement packet including a first BGP large community 500associated with the first tenant node. In some examples, the BGPadvertisement packet may be configured to include a BGP large community500 for each of the individual tenant nodes associated with the firstrouting device. The first routing device may then encode a first globalVNI label associated with the first tenant node 508 (e.g., a universallyunique identifier (UUID) of the first tenant node) into a first portion502 of the BGP large community 500. Additionally, or alternatively, thefirst routing device may encode an indication of the VNI type of thevirtual network 510 being utilized into a second portion 504 of the BGPlarge community 500. Additionally, or alternatively, the first routingdevice may encode a first address of a first network tunnel endpointassociated with the first (originating) routing device 512 into a thirdportion 506 of the BGP large community 500. In some examples, the firstaddress 512 may be an Internet Protocol version 4 (IPv4) address orinclude a mapping to an Internet Protocol version 6 (IPv6) tunneladdress. In examples where the first address of the first network tunnelendpoint associated with the first routing device 512 is an IPv6address, the encoded indication of the VNI type 510 may indicate thatthe first address 512 is an IPv6 address. Additionally, oralternatively, the encoded indication of the VNI type 510 may includeconfiguring one or more of the 4-bytes in the third portion 506 (or inany of the other portions 502 or 504) as an indicator (e.g., an integeror any other value that may be mapped in a database) that may be used tolook up a corresponding IPv6 tunnel address. This may be achieved byperforming a first lookup, based at least partly on the global VNI labelassociated with a tenant node 508 indicating the UUID of the tenant nodeand/or the VNI type of the virtual network 510, and then performing asecond lookup, based at least partly on the indicator encoded into thethird portion 506, to determine the corresponding IPv6 address mapped tothe indicator and associated with the tenant node. Additionally, oralternatively, it may be assumed by the routing devices that the firstaddress of the first network tunnel endpoint associated with the firstrouting device 512 is an IPv4 address. Once one or more of the portionsof the BGP large community have been encoded, the first routing devicemay send the first BGP advertisement packet to a second network domain(or any number of additional network domains) associated with themulti-domain computing resource network 102.

The routing devices may also be configured to decode any BGP largecommunities 500 in BGP advertisement packets received from additionalnetwork domains and/or routing device(s). For example, the first routingdevice may receive a second BGP advertisement packet including a secondBGP large community 500 from a second routing device associated with asecond network domain of the multi-domain computing resource network102. That is, continuing from the example above, the first routingdevice may then decode the first portion 502 of the second BGP largecommunity 500 including a second global VNI label corresponding to asecond tenant node 508 associated with the second routing device of thesecond network domain, the second portion 504 of the second BGP largecommunity 500 including an indication of a VNI type 510 associated withthe second network domain and/or an indication that the second addressof the second tunnel endpoint is an IPv6 address, and/or the thirdportion 506 of the second BGP large community 500 including a secondaddress of a second tunnel endpoint associated with the second routingdevice 512. In examples where the second address of the second tunnelendpoint is configured as an IPv6 address, the first and second lookup,as described above, may be performed by a routing device. With theinformation from the second BGP large community 500 decoded, the firstrouting device may then store, in the database associated with the firstrouting device, a mapping between the second global VNI label 508, thesecond address of the second tunnel endpoint 512, and/or the VNI type510 associated with the second network domain.

With the first routing device of the first network domain having thesecond address of the second tunnel endpoint of the second routingdevice 512 of the second network domain and/or the second routing deviceof the second network domain having the first address of the firsttunnel endpoint of the first routing device 512 of the first networkdomain, a network tunnel, such as, for example, the network tunnel 228as described with respect to FIG. 2 , may be established between thefirst routing device and the second routing device on top of theunderlying network transport, where data may be routed to and/or fromthe first tunnel endpoint and to the second tunnel endpoint and/or toand/or from the second tunnel endpoint and to the first tunnel endpointallowing for the first tenant and the second tenant to send and/orreceive communication data from one another.

FIGS. 6-15 illustrate flow diagrams of example methods 600-1500 and thatillustrate aspects of the functions performed at least partly by thecomputing resource network 102, the routing device(s) 106, theservice(s) 110(1)-(N), the database(s) 208, and/or the API server 206 asdescribed in FIGS. 1-5 . The logical operations described herein withrespect to FIGS. 6-15 may be implemented (1) as a sequence ofcomputer-implemented acts or program modules running on a computingsystem and/or (2) as interconnected machine logic circuits or circuitmodules within the computing system. In some examples, the method(s)600-1500 may be performed by a system comprising one or more processorsand one or more non-transitory computer-readable media storingcomputer-executable instructions that, when executed by the one or moreprocessors, cause the one or more processors to perform the method(s)600-1500.

The implementation of the various components described herein is amatter of choice dependent on the performance and other requirements ofthe computing system. Accordingly, the logical operations describedherein are referred to variously as operations, structural devices,acts, or modules. These operations, structural devices, acts, andmodules can be implemented in software, in firmware, in special purposedigital logic, and any combination thereof. It should also beappreciated that more or fewer operations might be performed than shownin the FIGS. 6-15 and described herein. These operations can also beperformed in parallel, or in a different order than those describedherein. Some or all of these operations can also be performed bycomponents other than those specifically identified. Although thetechniques described in this disclosure is with reference to specificcomponents, in other examples, the techniques may be implemented by lesscomponents, more components, different components, or any configurationof components.

FIG. 6 illustrates a flow diagram of an example method 600 for a routingdevice (e.g., a router and/or a route reflector) to encode and send aBGP advertisement including a BGP large community encoded with at leasta global VNI label and/or an originating routing device IP address. Insome examples, the routing device may be configured as the routingdevice 106, 302 as described with respect to FIGS. 1 and 3 ,respectively. Additionally, or alternatively, the routing device may beconfigured as a router 402 and/or a router cluster 204 as described withrespect to FIGS. 4 and 2 , respectively. Additionally, or alternatively,the BGP large community may be configured as the BGP large community 500as described with respect to FIG. 5 .

At 602, the method 600 includes determining that a first tenant node isassociated with a first router of a first network domain associated witha multi-domain network. In some examples, the multi-domain network maybe configured as the multi-domain computing resource network 102 asdescribed with respect to FIG. 1 . In some examples, the first routermay be connected to the first tenant node via a network connector node.In some examples, the network connector node may be configured as a VPNservice node, allowing a tenant node to connect to the multi-domainnetwork. In some examples, the connector node may be configured as aservice node 110(1)-(4) as described with respect to FIG. 1 .

At 604, the method 600 includes generating a first border gatewayprotocol (BGP) advertisement packet including a first BGP largecommunity. Additionally, or alternatively, the first BGP advertisementpacket may include any number of BGP large communities corresponding toa number of tenant nodes associated with the first routing device.

At 606, the method 600 includes encoding, into a first portion of thefirst BGP large community, a first global virtual network instance (VNI)label associated with the first tenant node. In some examples, the firstportion of the first BGP large community may correspond to the firstportion 502 and/or the first global VNI label may correspond to theglobal VNI label for tenant node 508 as described with respect to FIG. 5

At 608, the method 600 includes encoding, into a second portion of thefirst BGP large community, a first address of a first tunnel endpointassociated with the first router. In some examples, the second portionof the first BGP large community may correspond to the third portion 506and/or the first address may correspond to the originating routerencoded IP address 512 as described with respect to FIG. 5 .

At 610, the method 600 includes sending the first BGP advertisementpacket to a second network domain associated with the multi-domainnetwork. In some examples, the first BGP advertisement packet may besent to a second routing device associated with the second networkdomain.

In some examples, the first address of the first tunnel endpoint may bean Internet Protocol version 4 (IPv4) address.

In some examples, the multi-domain network is a virtual network.Additionally, or alternatively, the method 600 may include encoding,into a third portion of the first BGP large community, an indication ofa virtual network instance type of the virtual network. In someexamples, the third portion of the first BGP large community maycorrespond to the second portion 504 and/or the indication of thevirtual network instance type of the virtual network may correspond tothe encoded VNI type and VNI 510 as described with respect to FIG. 5 .Additionally, or alternatively, the virtual network instance type mayindicate that the address of the first tunnel endpoint includes anindication of an Internet Protocol version 6 (IPv6) address.

In some examples, the first global VNI label may include at least one ofa global MPLS VPN label, a global VXLAN label, and/or a global GENEVElabel.

Additionally, or alternatively, the method 600 includes receiving, froma second router of the second network domain, a second BGP advertisementpacket including a second BGP large community. Additionally, oralternatively, the method 600 includes storing, in a database associatedwith the first router, the second BGP large community in associationwith the second router of the second network domain.

Additionally, or alternatively, the method 600 may include determining,based at least in part on the second BGP large community, a secondaddress of a second tunnel endpoint associated with the second router.Additionally, or alternatively, the method 600 may include establishinga network tunnel connecting the first tunnel endpoint to the secondtunnel endpoint. In some examples, the network tunnel may correspond tothe network tunnel 228 as described with respect to FIG. 2 .

Additionally, or alternatively, the method 600 may include routing firstdata from the first tunnel endpoint and to the second tunnel endpointbased at least in part on the network tunnel. Additionally, oralternatively, the method 600 may include routing second data to thefirst tunnel endpoint and from the second tunnel endpoint based at leastin part on the network tunnel.

FIG. 7 illustrates a flow diagram of an example method 700 for a routingdevice to receive and decode a BGP advertisement including a BGP largecommunity encoded with at least a global VNI label and/or an originatingrouter IP address. In some examples, the routing device may beconfigured as the routing device 106, 302 as described with respect toFIGS. 1 and 3 , respectively. Additionally, or alternatively, therouting device may be configured as a router 402 and/or a router cluster204 as described with respect to FIGS. 4 and 2 , respectively.Additionally, or alternatively, the BGP large community may beconfigured as the BGP large community 500 as described with respect toFIG. 5 .

At 702, the method 700 includes receiving, at a first router of a firstnetwork domain of a multi-domain network and from a second router of asecond network domain of the multi-domain network, a first bordergateway protocol (BGP) advertisement packet including a first BGP largecommunity. In some examples, the multi-domain network may be configuredas the multi-domain computing resource network 102 as described withrespect to FIG. 1 .

At 704, the method 700 includes decoding, from a first portion of thefirst BGP large community, a first global virtual network instance (VNI)label corresponding to a first tenant node associated with the secondrouter.

At 706, the method 700 includes decoding, from a second portion of thefirst BGP large community, a first address of a first tunnel endpointassociated with the second router.

At 708, the method 700 includes storing, in a database associated withthe first router, a mapping between the first global VNI label and thefirst address of the first tunnel endpoint.

In some examples, the first address of the first tunnel endpoint may bean Internet Protocol version 4 (IPv4) address.

In some examples, the multi-domain network is a virtual network.Additionally, or alternatively, the method 700 includes decoding, from athird portion of the first BGP large community, an indication of avirtual network instance type of the virtual network.

In some examples, the multi-domain network may be a virtual network.Additionally, or alternatively, the method 700 includes decoding, from athird portion of the first BGP large community, an indication of avirtual network instance type of the virtual network, the virtualnetwork instance type indicating that the address of the first tunnelendpoint is an Internet Protocol version 6 (IPv6) address.

Additionally, or alternatively, the method 700 includes determining thata second tenant node is associated with the first router. Additionally,or alternatively, the method 700 includes generating a second BGPadvertisement packet including a second BGP large community.Additionally, or alternatively, the method 700 includes encoding, into afirst portion of the second BGP large community, a second global VNIlabel corresponding to the second tenant node associated with the firstrouter. Additionally, or alternatively, the method 700 includesencoding, into a second portion of the second BGP large community, asecond address of a second tunnel endpoint associated with the firstrouter. Additionally, or alternatively, the method 700 includes sendingthe second BGP advertisement packet to the second network domainassociated with the multi-domain network.

Additionally, or alternatively, the method 700 includes receiving, atthe first router and from the second tenant node of the first networkdomain, a request to send a data packet to the first tenant node of thesecond network domain. Additionally, or alternatively, the method 700includes determining, by the first router and based at least in part onthe mapping in the database, that the first tenant node is associatedwith the first global VNI label and the first address of the firsttunnel endpoint. Additionally, or alternatively, the method 700 includesdetermining, by the first router and based at least in part on themapping in the database, a route for sending the data packet from thesecond tenant node to the first tenant node. Additionally, oralternatively, the method 700 includes sending the data packet from thefirst router and to the second router based at least in part on theroute.

FIG. 8 illustrates a flow diagram of an example method 800 for a routingdevice to encode and send a BGP advertisement including one or moreencoded BGP large communities associated with each next hop node localto the routing device. In some examples, the routing device may beconfigured as the routing device 106, 302 as described with respect toFIGS. 1 and 3 , respectively. Additionally, or alternatively, therouting device may be configured as a router 402 and/or a router cluster204 as described with respect to FIGS. 4 and 2 , respectively.Additionally, or alternatively, the BGP large community may beconfigured as the BGP large community 500 as described with respect toFIG. 5 .

At 802, the method 800 includes identifying one or more next hop nodesassociated with a first router of a first network domain associated witha multi-domain network. In some examples, the multi-domain network maybe configured as the multi-domain computing resource network 102 asdescribed with respect to FIG. 1 .

At 804, the method 800 includes generating, for individual ones of theone or more next hop nodes, a border gateway protocol (BGP) largecommunity.

At 806, the method 800 includes generating a BGP advertisement packetincluding, for the individual ones of the one or more next hop nodes,the BGP large community.

At 808, the method 800 includes sending the BGP advertisement packet toa second network domain associated with the multi-domain network.

Additionally, or alternatively, the method 800 includes for theindividual ones of the one or more next hop nodes, encoding, into aportion of the BGP large community, network egress informationassociated with the first network domain.

Additionally, or alternatively, the method 800 includes for anindividual node of the one or more next hop nodes, encoding, into aportion of the BGP large community, a global virtual network instance(VNI) label associated with the individual node.

Additionally, or alternatively, the method 800 includes for individualones of the one or more next hop nodes, encoding, into a portion of theBGP large community, an address of a tunnel endpoint associated with thefirst router. In some examples, the address of the tunnel endpoint maybe an Internet Protocol version 4 (IPv4) address.

In some examples, the multi-domain network may be a virtual network.Additionally, or alternatively, the method 800 includes for individualones of the one or more next hope nodes, encoding, into a portion of theBGP large community, an indication of a virtual network instance type ofthe virtual network.

In some examples, the virtual network instance type may indicate that anaddress of a first tunnel endpoint associated with the first router isan Internet Protocol version 6 (IPv6) address.

FIG. 9 illustrates a flow diagram of an example method 900 for a firstrouting device in a first network domain to receive and decode a BGPadvertisement including one or more encoded BGP large communitiesassociated with each next hop local to a second routing device in asecond network domain, and further determining a route to send a datapacket from the first network domain to the second network domain. Insome examples, the routing device may be configured as the routingdevice 106, 302 as described with respect to FIGS. 1 and 3 ,respectively. Additionally, or alternatively, the routing device may beconfigured as a router 402 and/or a router cluster 204 as described withrespect to FIGS. 4 and 2 , respectively. Additionally, or alternatively,the BGP large community may be configured as the BGP large community 500as described with respect to FIG. 5 .

At 902, the method 900 includes receiving, at a first router of a firstnetwork domain associated with a multi-domain network and from a secondrouter of a second network domain associated with the multi-domainnetwork, a first border gateway protocol (BGP) advertisement packetincluding one or more first BGP large communities associated with one ormore first next hop nodes associated with the second router. In someexamples, the multi-domain network may be configured as the multi-domaincomputing resource network 102 as described with respect to FIG. 1 .

At 904, the method 900 includes receiving, at the first router and froma third router of the second network domain, a second BGP advertisementpacket including one or more second BGP large communities associatedwith one or more second next hop nodes associated with the third router.

At 906, the method 900 includes receiving, at the first router and froma first tenant node of the first network domain, a request to send adata packet to a second tenant node of the second network domain.

At 908, the method 900 includes determining, by the first router andbased at least in part on the first BGP advertisement packet and thesecond BGP advertisement packet, a route for sending the data packetfrom the first tenant node to the second tenant node.

At 910, the method 900 includes sending the data packet from the firstrouter and to one of the second router or the third router based atleast in part on the route.

Additionally, or alternatively, the method 900 includes storing, in arouting information base associated with the first router, the one ormore first BGP large communities in association with the one or morefirst next hop nodes associated with the second router.

Additionally, or alternatively, the method 900 includes determining thata first number of the one or more first next hop nodes associated withthe second router is greater than a second number of the one or moresecond next hop nodes associated with the third router. Additionally, oralternatively, the method 900 includes sending the data packet from thefirst router and to the second router based at least in part ondetermining that the first number is greater than the second number.

Additionally, or alternatively, the method 900 includes determining thatthe data packet is associated with a first traffic flow type.

Additionally, or alternatively, the method 900 includes determining arouting decision based at least in part on at least one of the one ormore first next hop nodes are associated with the first traffic flowtype and/or the one or more second next hop nodes are associated with asecond traffic flow type that is different from the first traffic flowtype. Additionally, or alternatively, the method 900 includes sendingthe data packet from the first router and to the second router based atleast in part on the routing decision.

Additionally, or alternatively, the method 900 includes determining,based at least in part on the one or more first BGP large communities, afirst priority associated with at least one of the one or more firstnext hop nodes. Additionally, or alternatively, the method 900 includesdetermining, based at least in part on the one or more second BGP largecommunities, a second priority associated with at least one of the oneor more second hop nodes. Additionally, or alternatively, the method 900includes determining that the first priority is greater than the secondpriority. Additionally, or alternatively, the method 900 includes basedat least in part on determining that the first priority is greater thanthe second priority, sending the data packet from the first router andto the second router.

In some examples, the route is a first route connecting a first tunnelendpoint associated with the first router to a second tunnel endpointassociated with the second router. Additionally, or alternatively, themethod 900 includes determining, by the first router and based at leastin part on the second BGP advertisement packet, a second routeconnecting the first tunnel endpoint to a third tunnel endpointassociated with the third router.

Additionally, or alternatively, the method 900 includes determining afirst available bandwidth associated with the one or more first next hopnodes. Additionally, or alternatively, the method 900 includesdetermining a second available bandwidth associated with the one or moresecond next hop nodes. Additionally, or alternatively, the method 900includes determining that the first available bandwidth is greater thanthe second available bandwidth. Additionally, or alternatively, themethod 900 includes based at least in part on determining that the firstavailable bandwidth is greater than the second available bandwidth,sending the data packet from the first router and to the second routerusing the route.

FIG. 10 illustrates a flow diagram of an example method 1000 for arouting device to determine a packet flow configuration for sending adata packet from a tenant endpoint, through a service chain, and to adestination endpoint. In some examples, the routing device may beconfigured as the routing device 106, 302 as described with respect toFIGS. 1 and 3 , respectively. Additionally, or alternatively, therouting device may be configured as a router 402 and/or a router cluster204 as described with respect to FIGS. 4 and 2 , respectively.Additionally, or alternatively, the packet flow configuration maycorrespond to the packet flow configuration as described with respect toFIGS. 4 and 5 .

At 1002, the method 1000 includes receiving, at a router associated witha first network domain of a multi-domain network and from a trafficacquisition service, a request to send a data packet from a userendpoint and to a destination endpoint, the data packet including aprimary global virtual network instance (VNI) label associated with theuser endpoint. In some examples, the multi-domain network may beconfigured as the multi-domain computing resource network 102 asdescribed with respect to FIG. 1 . In some examples, a service node ofthe service chain may correspond to a connector 408-418 as describedwith respect to FIG. 4 .

At 1004, the method 1000 includes identifying, in a datastore associatedwith the first network domain and based at least in part on a traffictype associated with the data packet, a packet flow configurationassociated with the data packet, the packet flow configuration includingone or more secondary global VNI labels.

At 1006, the method 1000 includes sending, based at least in part on thepacket flow configuration, the data packet from the router and to afirst service node associated with the multi-domain network.

At 1008, the method 1000 includes receiving the data packet at therouter and from the first service node associated with the multi-domainnetwork.

At 1010, the method 1000 includes sending, based at least in part on thepacket flow configuration, the data packet from the router and to asecond service node associated with the multi-domain network.

At 1012, the method 1000 includes receiving the data packet at therouter and from the second service node associated with the multi-domainnetwork.

At 1014, the method includes sending the data packet from the router andto the destination endpoint.

In some examples, the first service node may offer a service comprisingat least one of a deep packet inspection (DPI) service, acloud-delivered firewall (CDFW) service, a network address translation(NAT) service, a secure web gateway (SWG) service, a domain name service(DNS) layer security service, a cloud access security broker (CASB)service.

Additionally, or alternatively, the method 1000 includes sending thedata packet to the first service node is based at least in part on afirst secondary global VNI label of the one or more secondary global VNIlabels. In some examples, the first secondary global VNI label indicatesa first service offered by the first service node. Additionally, oralternatively, the method 1000 includes sending the data packet to thesecond service node is based at least in part on a second secondaryglobal VNI label of the one or more secondary global VNI labels. In someexamples, the second secondary global VNI label indicates a secondservice offered by the second service node.

Additionally, or alternatively, the method 1000 includes receiving, atthe router and from the traffic acquisition service, an additionalrequest to send an additional data packet from the user endpoint and tothe destination endpoint. In some examples, the additional data packetincludes the primary global VNI label associated with the user endpoint.Additionally, or alternatively, the method 1000 includes identifying, inthe datastore and based at least in part on an additional traffic typeassociated with the additional data packet, an additional packet flowconfiguration associated with the additional data packet. In someexamples, the additional packet flow configuration including one or moreadditional secondary global VNI labels, and wherein the additionaltraffic type is different from the traffic type. Additionally, oralternatively, the method 1000 includes sending, based at least in parton the additional packet flow configuration, the additional data packetfrom the router and to a third service node associated with themulti-domain network. Additionally, or alternatively, the method 1000includes receiving the data packet at the router and from the thirdservice node associated with the multi-domain network. Additionally, oralternatively, the method 1000 includes sending the data packet from therouter and to the destination endpoint.

Additionally, or alternatively, the method 1000 includes determiningthat the first service node is associated with a second router of asecond network domain associated with the multi-domain network.Additionally, or alternatively, the method 1000 includes determining anaddress of a tunnel endpoint associated with the second router.Additionally, or alternatively, the method 1000 includes establishing anetwork tunnel connecting a second tunnel endpoint associated with thefirst router to the second tunnel endpoint. In some examples, sendingthe data packet to the first service node comprises sending the datapacket through the network tunnel from the first router and to thesecond router. In some examples, receiving the data packet from thefirst service node comprises receiving the data packet through thenetwork tunnel at the first router and from the second router.

In some examples, identifying the packet flow configuration may compriseidentifying the packet flow configuration associated with the datapacket based at least in part on the primary global VNI label associatedwith the user endpoint.

In some examples, the one or more secondary global VNI labels arestacked in the packet flow configuration in an order and indicate one ormore services that the traffic type requires the data packet be sent toaccording to the order.

FIG. 11 illustrates a flow diagram of another example method 1100 for arouting device to determine a packet flow configuration for sending adata packet from a tenant endpoint, through a service chain, and to adestination endpoint. In some examples, the routing device may beconfigured as the routing device 106, 302 as described with respect toFIGS. 1 and 3 , respectively. Additionally, or alternatively, therouting device may be configured as a router 402 and/or a router cluster204 as described with respect to FIGS. 4 and 2 , respectively.Additionally, or alternatively, the packet flow configuration maycorrespond to the packet flow configuration as described with respect toFIGS. 4 and 5 . In some examples, a service node of the service chainmay correspond to a connector 408-418 as described with respect to FIG.4 .

At 1102, the method 1100 includes receiving, at a router associated witha first network domain of a multi-domain network and from a trafficacquisition service, a request to send a data packet from a userendpoint and to a destination endpoint, the data packet including aprimary global virtual network instance (VNI) label associated with theuser endpoint. In some examples, the multi-domain network may beconfigured as the multi-domain computing resource network 102 asdescribed with respect to FIG. 1 .

At 1104, the method 1100 includes identifying, in a datastore associatedwith the first network domain and based at least in part on a traffictype associated with the data packet, a packet flow configurationassociated with the data packet, the packet flow configuration includingone or more secondary global VNI labels.

At 1106, the method 1100 includes sending, based at least in part on thepacket flow configuration, the data packet from the router and to afirst service node associated with the multi-domain network.

At 1108, the method 1100 includes receiving the data packet at therouter and from the first service node associated with the multi-domainnetwork.

At 1110, the method 1100 includes sending the data packet from therouter and to the destination endpoint.

In some examples, the first service node may offer a service comprisingat least one of a deep packet inspection (DPI) service, acloud-delivered firewall (CDFW) service, a network address translation(NAT) service, a secure web gateway (SWG) service, a domain name service(DNS) layer security service, a cloud access security broker (CASB)service.

Additionally, or alternatively, the method 1100 includes sending, priorto sending the data packet to the destination endpoint and based atleast in part on the packet flow configuration, the data packet from thefirst router and to a second router associated with a second networkdomain of the multi-domain network. In some examples, the second routeris configured to route the data packet to a second service nodeassociated with the second network domain. Additionally, oralternatively, the method 1100 includes receiving, prior to sending thedata packet to the destination endpoint, the data packet at the firstrouter and from the second router associated with the second networkdomain.

Additionally, or alternatively, the method 1100 includes sending thedata packet to the first service node based at least in part on a firstsecondary global VNI label of the one or more secondary global VNIlabels. In some examples, the first secondary global VNI label indicatesa first service offered by the first service node.

Additionally, or alternatively, the method 1100 includes identifying thepacket flow configuration associated with the data packet based at leastin part on the primary global VNI label associated with the userendpoint.

In some examples, the one or more secondary global VNI labels arestacked in the packet flow configuration in an order and indicate one ormore services that the traffic type requires the data packet be sent toaccording to the order.

FIG. 12 illustrates a flow diagram of an example method 1200 fordetermining and storing updated network configuration data for a networkdomain of a multi-domain network based on current network configurationdata of the network domain and an API request, configured to cause arouting device of the network domain to perform an operation, receivedat an API server. In some examples, the routing device may be configuredas the routing device 106, 302 as described with respect to FIGS. 1 and3 , respectively. Additionally, or alternatively, the routing device maybe configured as a router 402 and/or a router cluster 204 as describedwith respect to FIGS. 4 and 2 , respectively. Additionally, oralternatively, the API server may correspond to the API server 206 asdescribed with respect to FIG. 2 .

At 1202, the method 1200 includes receiving an application programminginterface (API) request associated with an API server of a first networkdomain of a multi-domain network. In some examples, the multi-domainnetwork may be configured as the multi-domain computing resource network102 as described with respect to FIG. 1 . In some examples, the APIrequest may correspond to the API request as described with respect toFIG. 2 .

At 1204, the method 1200 includes determining that the API requestcorresponds to performance of an operation by a router associated withthe first network domain, the router being configured to update networkconfigurations for the first network domain.

At 1206, the method 1200 includes identifying current networkconfigurations for the first network domain in a datastore associatedwith the first network domain.

At 1208, the method 1200 includes determining, based at least in part onthe current network configurations and the operation, updated networkconfigurations for the first network domain.

At 1210, the method 1200 includes storing, in the datastore, the updatednetwork configurations for the first network domain.

Additionally, or alternatively, the method 1200 includes identifying achange in the current network configurations for the first networkdomain caused at least partly by the performance of the operation,wherein determining the updated network configurations is based at leastin part on the change. Additionally, or alternatively, the method 1200includes sending, from the router, a border gateway protocol (BGP)advertisement to an edge device in a second network domain of themulti-domain network, the BGP advertisement indicating the updatednetwork configurations for the first network domain.

In some examples, the API request is received from a network connectornode associated with the first network domain. Additionally, oralternatively, the method 1200 includes sending, from the router and tothe network connector node, the updated network configurations for thefirst network domain.

In some examples, the operation comprises at least one of creating,reading, updating, and deleting a virtual routing and forwarding (VRF)associated with the first network domain. Additionally, oralternatively, the method 1200 includes sending, to a tenant of one ormore tenants associated with the first network domain, a globalidentifier associated with the VRF. In some examples, the API request isreceived from the tenant.

In some examples, the operation comprises at least one of creating,reading, updating, and deleting a network connector node. In someexamples, the network connector node connecting the first network domainto at least one of a second network domain of the multi-domain networkvia a network tunnel and/or a third network domain separate from themulti-domain network. Additionally, or alternatively, the method 1200includes sending, to a tenant of one or more tenants associated with thefirst network domain, a global identifier associated with the networkconnector node, wherein API request is received from the tenant.

In some examples, the operation comprises at least one of creating,reading, updating, and deleting a network route for transmittingcommunications through one or more network connector nodes of the firstnetwork domain and out of the first network domain to one or more secondnetwork domains of the multi-domain network. Additionally, oralternatively, the method 1200 includes configuring, by the router, theone or more network connector nodes to transmit communications throughthe first network domain and out of the first network domain to one ormore additional network domains according to the network route.

In some examples, the API request is a first API request. Additionally,or alternatively, the method 1200 includes receiving, from an admindevice associated with a tenant of one or more tenants associated withthe first network domain, a second API request associated with the APIserver of the first network domain. Additionally, or alternatively, themethod 1200 includes determining that the second API request includes arequest for network performance data associated with at least one ofnetwork connector nodes of the first network domain or network routesfor transmitting communications through the network connector nodes ofthe first network domain. Additionally, or alternatively, the method1200 includes determining the network performance data associated withthe tenant. Additionally, or alternatively, the method 1200 includessending, to the admin device. In some examples, the network performancedata may include at least one of a first indication of the networkperformance associated with the network connector nodes, a secondindication of the network performance associated with the networkroutes, and/or a third indication of network performance associated withthe change in the network configurations for the first network domaincaused at least partly by the performance of the operation. In someexamples, the first indication of network performance may indicate atleast one of reachability of the network connector nodes, bandwidthusage of the network connector nodes, central processing unit (CPU)usage of the network connector nodes, and a number of links available tothe network connector nodes. In some examples, the second indication ofthe network performance may indicate at least one of the network routesassociated with the first network domain and a preference associatedwith the network routes.

FIG. 13 illustrates a flow diagram of another example method 1300 fordetermining and storing updated network configuration data for a networkdomain of a multi-domain network based on current network configurationdata of the network domain and an API request, configured to cause arouting device of the network domain to perform an operation, receivedat an API server. In some examples, the multi-domain network may beconfigured as the multi-domain computing resource network 102 asdescribed with respect to FIG. 1 . In some examples, the routing devicemay be configured as the routing device 106, 302 as described withrespect to FIGS. 1 and 3 , respectively. Additionally, or alternatively,the routing device may be configured as a router 402 and/or a routercluster 204 as described with respect to FIGS. 4 and 2 , respectively.Additionally, or alternatively, the API server may correspond to the APIserver 206 as described with respect to FIG. 2 .

At 1302, the method 1300 includes receiving an API request associatedwith an API server of a first network domain of a multi-domain network.In some examples, the API request may correspond to the API request asdescribed with respect to FIG. 2 .

At 1304, the method 1300 includes determining that the API requestcorresponds to performance of an operation associated with the firstnetwork domain.

At 1306, the method 1300 includes determining, based at least in part oncurrent network configurations and the operation, updated networkconfigurations for the first network domain.

At 1308, the method 1300 includes storing, in a datastore associatedwith the first network domain, the updated network configurations forthe first network domain.

Additionally, or alternatively, the method 1300 includes sending, from afirst router associated with the first network domain and to an edgedevice in a second network domain of the multi-domain network, a bordergateway protocol (BGP) advertisement indicating the updated networkconfigurations for the first network domain.

In some examples, the operation comprises at least one of creating,reading, updating, and deleting a virtual routing and forwarding (VRF)associated with the first network domain. Additionally, oralternatively, the method 1300 includes sending, to a tenant of one ormore tenants associated with the first network domain, a globalidentifier associated with the VRF, wherein API request is received fromthe tenant.

In some examples, the operation comprises at least one of creating,reading, updating, and deleting a network connector node. In someexamples, the network connector node may connect the first networkdomain to at least one of a second network domain of the multi-domainnetwork via a network tunnel and/or a third network domain separate fromthe multi-domain network. Additionally, or alternatively, the method1300 includes sending, to a tenant of one or more tenants associatedwith the first network domain, a global identifier associated with thenetwork connector node, wherein API request is received from the tenant.

In some examples, the operation comprises at least one of creating,reading, updating, and deleting a network route for transmittingcommunications through one or more network connector nodes of the firstnetwork domain and out of the first network domain to one or more secondnetwork domains of the multi-domain network. Additionally, oralternatively, the method 1300 includes configuring, by a first routerof the first network domain, the one or more network connector nodes totransmit communications through the first network domain and out of thefirst network domain to one or more additional network domains accordingto the network route.

In some examples, the API request is received from a network connectornode associated with the first network domain. Additionally, oralternatively, the method 1300 includes sending, from a first routerassociated with the first network domain and to the network connectornode, the updated network configurations for the first network domain.

FIG. 14 illustrates a flow diagram of an example method 1400 for arouting device to register with a service discovery system to utilizenetwork configuration data associated with a multi-domain network andidentify network nodes to establish network routes through themulti-domain network using the network nodes. In some examples, therouting device may be configured as the routing device 106, 302 asdescribed with respect to FIGS. 1 and 3 , respectively. Additionally, oralternatively, the routing device may be configured as a router 402and/or a router cluster 204 as described with respect to FIGS. 4 and 2 ,respectively. Additionally, or alternatively, the service discoverysystem may be configured as the service discovery system and/or thedatastore cluster 208 as described with respect to FIG. 2 . In someexamples, the network configuration data may correspond to the networkconfiguration data 210 as described with respect to FIG. 2 .

At 1402, the method 1400 includes provisioning a routing device in afirst network domain, wherein the first network domain includes aservice discovery system that maintains network configuration data for amulti-domain network that includes at least the first network domain anda second network domain. In some examples, the multi-domain network maybe configured as the multi-domain computing resource network 102 asdescribed with respect to FIG. 1 .

At 1404, the method 1400 includes sending, from the routing device, arequest to register with the service discovery system for use of thenetwork configuration data.

At 1406, the method 1400 includes identifying, by the routing device andbased at least in part on the network configuration data, network nodesin the multi-domain network.

At 1408, the method 1400 includes establishing, partly by the routingdevice, network routes through the multi-domain network with the networknodes.

Additionally, or alternatively, the method 1400 includes sending, fromthe routing device, a request for a health check associated with thefirst network domain. Additionally, or alternatively, the method 1400includes receiving, at the routing device and from the service discoverysystem, an indication that a network route of the network routes isunreachable. Additionally, or alternatively, the method 1400 includesremoving, partly by the routing device, the network route from thenetwork routes.

Additionally, or alternatively, the method 1400 includes sending, fromthe routing device, a request for a health check associated with thefirst network domain. Additionally, or alternatively, the method 1400includes receiving, at the routing device and from the service discoverysystem, an indication that a first network route of the network routesis performing below a threshold level of performance. Additionally, oralternatively, the method 1400 includes prioritizing, partly by therouting device, a second network route of the network routes over thefirst network route. In some examples, the second network route may beperforming above the threshold level of performance.

In some examples, the routing device is a first routing device.Additionally, or alternatively, the method 1400 includes receiving, atthe first routing device, a first indication that a second routingdevice in the second network domain is registered with the servicediscovery system. Additionally, or alternatively, the method 1400includes establishing, partly by the first routing device and based atleast in part on the network configuration data, a network tunnelconnecting the first routing device to the second routing device.Additionally, or alternatively, the method 1400 includes identifying, bythe first routing device and based at least in part on the networkconfiguration data, additional network nodes associated with the secondrouting device in the multi-domain network. Additionally, oralternatively, the method 1400 includes establishing, partly by thefirst routing device, additional network routes through the multi-domainnetwork with the additional network nodes.

Additionally, or alternatively, the method 1400 includes receiving, atthe first routing device, a second indication that the second routingdevice deregistered with the service discovery system. Additionally, oralternatively, the method 1400 includes removing, partly by the firstrouting device and based at least in part on the network configurationdata, the network tunnel connecting the first routing device to thesecond routing device.

Additionally, or alternatively, the method 1400 includes receiving, atthe first routing device, a second indication that the second routingdevice deregistered with the service discovery system. Additionally, oralternatively, the method 1400 includes removing, partly by the firstrouting device and based at least in part on receiving the secondindication, the additional network routes through the multi-domainnetwork.

In some examples, the network routes may be first network routes.Additionally, or alternatively, the method 1400 includes sending, fromthe routing device, a request for a performance check associated withthe first network domain. Additionally, or alternatively, the method1400 includes receiving, at the routing device and from the servicediscovery system, network performance data associated with the firstnetwork domain, the network performance data indicating at least one ofbandwidth usage of the network nodes, central processing unit (CPU)usage of the network nodes, and a number of links available to thenetwork nodes. Additionally, or alternatively, the method 1400 includesestablishing, partly by the routing device and based at least in part onthe network performance data, second network routes through themulti-domain network with the network nodes, the second network routesbeing different from the first network routes.

FIG. 15 illustrates a flow diagram of an example method 1500 for aservice discovery system to maintain a database including networkconfiguration data for a multi-domain network and handle requests,received from various routing devices of the multi-domain network, toregister with the service discovery system and utilize the networkconfiguration data. In some examples, the routing device may beconfigured as the routing device 106, 302 as described with respect toFIGS. 1 and 3 , respectively. Additionally, or alternatively, therouting device may be configured as a router 402 and/or a router cluster204 as described with respect to FIGS. 4 and 2 , respectively.Additionally, or alternatively, the service discovery system may beconfigured as the service discovery system and/or the datastore cluster208 as described with respect to FIG. 2 . In some examples, the networkconfiguration data may correspond to the network configuration data 210as described with respect to FIG. 2 .

At 1502, the method 1500 includes receiving, at a service discoverysystem of a first network domain that maintains network configurationdata for a multi-domain network including the first network domain, anindication that a first routing device is being provisioned in the firstnetwork domain. In some examples, the multi-domain network may beconfigured as the multi-domain computing resource network 102 asdescribed with respect to FIG. 1 .

At 1504, the method 1500 includes receiving, at the service discoverysystem and from the first routing device, a request to register with theservice discovery system for use of the network configuration data.

At 1506, the method 1500 includes identifying, by the service discoverysystem and in a datastore that stores the network configuration data,the network configuration data for the first network domain.

At 1508, the method 1500 includes sending, from the service discoverysystem and to the first routing device, the network configuration datafor the first network domain, wherein the network configuration dataincludes at least first configuration data for establishing firstnetwork routes through the multi-domain network with first network nodesin the first network domain.

Additionally, or alternatively, the method 1500 includes receiving, atthe service discovery system and from the first routing device, arequest for a health check. Additionally, or alternatively, the method1500 includes determining, partly by the service discovery system, thata network route of the first network routes is unreachable.Additionally, or alternatively, the method 1500 includes sending, fromthe service discovery system and to the first routing device, anindication that the network route is unreachable.

Additionally, or alternatively, the method 1500 includes receiving, atthe service discovery system and from the first routing device, arequest for a performance check associated with the first networkdomain.

Additionally, or alternatively, the method 1500 includes determining, bythe service discovery system, network performance data associated withthe first network domain, the network performance data indicating atleast one of bandwidth usage of the first network nodes, centralprocessing unit (CPU) usage of the first network nodes, and a number oflinks available to the first network nodes. Additionally, oralternatively, the method 1500 includes sending, from the servicediscovery system and to the first routing device, the networkperformance data.

Additionally, or alternatively, the method 1500 includes receiving, atthe service discovery system and from the first routing device, arequest for a health check. Additionally, or alternatively, the method1500 includes determining, partly by the service discovery system, thata network route of the first network routes is performing below athreshold level of performance. Additionally, or alternatively, themethod 1500 includes sending, from the service discovery system and tothe first routing device, an indication that the network route isperforming below the threshold level of performance.

Additionally, or alternatively, the method 1500 includes receiving, atthe service discovery system and from a second routing deviceprovisioned in a second network domain of the multi-domain network, asecond request to register with the service discovery system for use ofthe network configuration data. Additionally, or alternatively, themethod 1500 includes identifying, by the service discovery system and inthe datastore, the network configuration data for the first networkdomain and the second network domain. Additionally, or alternatively,the method 1500 includes sending, from the service discovery system andto the second routing device, the network configuration data for thefirst network domain and the second network domain. In some examples,the network configuration data may include at least the firstconfiguration data and second configuration data for establishing secondnetwork routes through the multi-domain network with second networknodes in the second network domain.

Additionally, or alternatively, the method 1500 includes receiving, atthe service discovery system, an indication that the second routingdevice deregistered with the service discovery system. Additionally, oralternatively, the method 1500 includes sending, from the servicediscovery system and to the first routing device, the indication thatthe second routing device deregistered with the service discoverysystem.

FIG. 16 is a computing system diagram illustrating a configuration for adata center 1600 that can be utilized to implement aspects of thetechnologies disclosed herein. The example data center 1600 shown inFIG. 16 includes several server computers 1602A-1602E (which might bereferred to herein singularly as “a server computer 1602” or in theplural as “the server computers 1602”) for providing computingresources. In some examples, the server computers 1602 may include, orcorrespond to, the servers associated with the data center 104 describedherein with respect to FIG. 1 .

The server computers 1602 can be standard tower, rack-mount, or bladeserver computers configured appropriately for providing the computingresources described herein. As mentioned above, the computing resourcesprovided by the computing resource network 102 can be data processingresources such as VM instances or hardware computing systems, databaseclusters, computing clusters, storage clusters, data storage resources,database resources, networking resources, and others. Some of theservers 1602 can also be configured to execute a resource managercapable of instantiating and/or managing the computing resources. In thecase of VM instances, for example, the resource manager can be ahypervisor or another type of program configured to enable the executionof multiple VM instances on a single server computer 1602. Servercomputers 1602 in the data center 1600 can also be configured to providenetwork services and other types of services.

In the example data center 1600 shown in FIG. 16 , an appropriate LAN1608 is also utilized to interconnect the server computers 1602A-1602E.It should be appreciated that the configuration and network topologydescribed herein has been greatly simplified and that many morecomputing systems, software components, networks, and networking devicescan be utilized to interconnect the various computing systems disclosedherein and to provide the functionality described above. Appropriateload balancing devices or other types of network infrastructurecomponents can also be utilized for balancing a load between datacenters 1600, between each of the server computers 1602A-1602E in eachdata center 1600, and, potentially, between computing resources in eachof the server computers 1602. It should be appreciated that theconfiguration of the data center 1600 described with reference to FIG.16 is merely illustrative and that other implementations can beutilized.

In some examples, the server computers 1602 may each execute one or morerouter(s) 106, one or more datastore(s) 208, an API server 206, and/orone or more connectors 108.

In some instances, the computing resource network 102 may providecomputing resources, like application containers, VM instances, andstorage, on a permanent or an as-needed basis. Among other types offunctionality, the computing resources provided by the computingresource network 102 may be utilized to implement the various servicesdescribed above. The computing resources provided by the computingresource network 102 can include various types of computing resources,such as data processing resources like application containers and VMinstances, data storage resources, networking resources, datacommunication resources, network services, and the like.

Each type of computing resource provided by the computing resourcenetwork 102 can be general-purpose or can be available in a number ofspecific configurations. For example, data processing resources can beavailable as physical computers or VM instances in a number of differentconfigurations. The VM instances can be configured to executeapplications, including web servers, application servers, media servers,database servers, some or all of the network services described above,and/or other types of programs. Data storage resources can include filestorage devices, block storage devices, and the like. The computingresources network 102 can also be configured to provide other types ofcomputing resources not mentioned specifically herein.

The computing resources provided by the computing resource network 102may be enabled in one embodiment by one or more data centers 1600 (whichmight be referred to herein singularly as “a data center 1600” or in theplural as “the data centers 1600”). The data centers 1600 are facilitiesutilized to house and operate computer systems and associatedcomponents. The data centers 1600 typically include redundant and backuppower, communications, cooling, and security systems. The data centers1600 can also be located in geographically disparate locations. Oneillustrative embodiment for a data center 1600 that can be utilized toimplement the technologies disclosed herein will be described below withregard to FIG. 17 .

FIG. 17 shows an example computer architecture for a computing device(or network routing device) 1602 capable of executing program componentsfor implementing the functionality described above. The computerarchitecture shown in FIG. 17 illustrates a conventional servercomputer, workstation, desktop computer, laptop, tablet, networkappliance, e-reader, smartphone, or other computing device, and can beutilized to execute any of the software components presented herein. Thecomputing device 1602 may, in some examples, correspond to a physicalserver of a data center 104 described herein with respect to FIG. 1 .

The computing device 1602 includes a baseboard 1702, or “motherboard,”which is a printed circuit board to which a multitude of components ordevices can be connected by way of a system bus or other electricalcommunication paths. In one illustrative configuration, one or morecentral processing units (“CPUs”) 1704 operate in conjunction with achipset 1706. The CPUs 1704 can be standard programmable processors thatperform arithmetic and logical operations necessary for the operation ofthe computing device 1602.

The CPUs 1704 perform operations by transitioning from one discrete,physical state to the next through the manipulation of switchingelements that differentiate between and change these states. Switchingelements generally include electronic circuits that maintain one of twobinary states, such as flip-flops, and electronic circuits that providean output state based on the logical combination of the states of one ormore other switching elements, such as logic gates. These basicswitching elements can be combined to create more complex logiccircuits, including registers, adders-subtractors, arithmetic logicunits, floating-point units, and the like.

The chipset 1706 provides an interface between the CPUs 1704 and theremainder of the components and devices on the baseboard 1702. Thechipset 1706 can provide an interface to a RAM 1708, used as the mainmemory in the computing device 1602. The chipset 1706 can furtherprovide an interface to a computer-readable storage medium such as aread-only memory (“ROM”) 1710 or non-volatile RAM (“NVRAM”) for storingbasic routines that help to startup the computing device 1602 and totransfer information between the various components and devices. The ROM1710 or NVRAM can also store other software components necessary for theoperation of the computing device 1602 in accordance with theconfigurations described herein.

The computing device 1602 can operate in a networked environment usinglogical connections to remote computing devices and computer systemsthrough a network, such as the network 1726. The chipset 1706 caninclude functionality for providing network connectivity through a NIC1712, such as a gigabit Ethernet adapter. The NIC 1712 is capable ofconnecting the computing device 1602 to other computing devices over thenetwork 1726. It should be appreciated that multiple NICs 1712 can bepresent in the computing device 1602, connecting the computer to othertypes of networks and remote computer systems.

The computing device 1602 can be connected to a storage device 1718 thatprovides non-volatile storage for the computing device 1602. The storagedevice 1718 can store an operating system 1720, programs 1722, and data,which have been described in greater detail herein. The storage device1718 can be connected to the computing device 1602 through a storagecontroller 1714 connected to the chipset 1706. The storage device 1718can consist of one or more physical storage units. The storagecontroller 1714 can interface with the physical storage units through aserial attached SCSI (“SAS”) interface, a serial advanced technologyattachment (“SATA”) interface, a fiber channel (“FC”) interface, orother type of interface for physically connecting and transferring databetween computers and physical storage units.

The computing device 1602 can store data on the storage device 1718 bytransforming the physical state of the physical storage units to reflectthe information being stored. The specific transformation of physicalstate can depend on various factors, in different embodiments of thisdescription. Examples of such factors can include, but are not limitedto, the technology used to implement the physical storage units, whetherthe storage device 1718 is characterized as primary or secondarystorage, and the like.

For example, the computing device 1602 can store information to thestorage device 1718 by issuing instructions through the storagecontroller 1714 to alter the magnetic characteristics of a particularlocation within a magnetic disk drive unit, the reflective or refractivecharacteristics of a particular location in an optical storage unit, orthe electrical characteristics of a particular capacitor, transistor, orother discrete component in a solid-state storage unit. Othertransformations of physical media are possible without departing fromthe scope and spirit of the present description, with the foregoingexamples provided only to facilitate this description. The computingdevice 1602 can further read information from the storage device 1718 bydetecting the physical states or characteristics of one or moreparticular locations within the physical storage units.

In addition to the mass storage device 1718 described above, thecomputing device 1602 can have access to other computer-readable storagemedia to store and retrieve information, such as program modules, datastructures, or other data. It should be appreciated by those skilled inthe art that computer-readable storage media is any available media thatprovides for the non-transitory storage of data and that can be accessedby the computing device 1602. In some examples, the operations performedby the computing resource network 102, and or any components includedtherein, may be supported by one or more devices similar to computingdevice 1602. Stated otherwise, some or all of the operations performedby the computing resource network 102, and or any components includedtherein, may be performed by one or more computing device 1602 operatingin a cloud-based arrangement.

By way of example, and not limitation, computer-readable storage mediacan include volatile and non-volatile, removable and non-removable mediaimplemented in any method or technology. Computer-readable storage mediaincludes, but is not limited to, RAM, ROM, erasable programmable ROM(“EPROM”), electrically-erasable programmable ROM (“EEPROM”), flashmemory or other solid-state memory technology, compact disc ROM(“CD-ROM”), digital versatile disk (“DVD”), high definition DVD(“HD-DVD”), BLU-RAY, or other optical storage, magnetic cassettes,magnetic tape, magnetic disk storage or other magnetic storage devices,or any other medium that can be used to store the desired information ina non-transitory fashion.

As mentioned briefly above, the storage device 1718 can store anoperating system 1720 utilized to control the operation of the computingdevice 1602. According to one embodiment, the operating system comprisesthe LINUX operating system. According to another embodiment, theoperating system comprises the WINDOWS® SERVER operating system fromMICROSOFT Corporation of Redmond, Wash. According to furtherembodiments, the operating system can comprise the UNIX operating systemor one of its variants. It should be appreciated that other operatingsystems can also be utilized. The storage device 1718 can store othersystem or application programs and data utilized by the computing device1602.

In one embodiment, the storage device 1718 or other computer-readablestorage media is encoded with computer-executable instructions which,when loaded into the computing device 1602, transform the computer froma general-purpose computing system into a special-purpose computercapable of implementing the embodiments described herein. Thesecomputer-executable instructions transform the computing device 1602 byspecifying how the CPUs 1704 transition between states, as describedabove. According to one embodiment, the computing device 1602 has accessto computer-readable storage media storing computer-executableinstructions which, when executed by the computing device 1602, performthe various processes described above with regard to FIGS. 1-15 . Thecomputing device 1602 can also include computer-readable storage mediahaving instructions stored thereupon for performing any of the othercomputer-implemented operations described herein.

The computing device 1602 can also include one or more input/outputcontrollers 1716 for receiving and processing input from a number ofinput devices, such as a keyboard, a mouse, a touchpad, a touch screen,an electronic stylus, or other type of input device. Similarly, aninput/output controller 1716 can provide output to a display, such as acomputer monitor, a flat-panel display, a digital projector, a printer,or other type of output device. It will be appreciated that thecomputing device 1602 might not include all of the components shown inFIG. 7 , can include other components that are not explicitly shown inFIG. 7 , or might utilize an architecture completely different than thatshown in FIG. 7 .

The server computer 1602 may support a virtualization layer 1724, suchas one or more components associated with the multi-domain computingresource network 102, such as, for example, the router 106, the APIserver 206, one or more connector(s) 108, and/or one or moredatastore(s) 208. At “1A,” a router 106 may receive an indication of atenant endpoint 114 in the network domain. The router 106 may encode aBGP large community with network data for routing communications toand/or from the tenant endpoint 114. At “2A,” the router may send a BGPlarge community advertisement to one or more additional router(s) 106.The one or more additional routers 106 may then decode the network dataand store the network data in a datastore 208. Additionally, oralternatively, at “1B,” the router 106 may receive a data pocket from anadditional router 106 associated with a source endpoint. Additionally,or alternatively, the router 106 may determine that the data packet hasa destination endpoint 114. At “2B,” the router 106 may then send thedata packet to the destination endpoint 114.

While the invention is described with respect to the specific examples,it is to be understood that the scope of the invention is not limited tothese specific examples. Since other modifications and changes varied tofit particular operating requirements and environments will be apparentto those skilled in the art, the invention is not considered limited tothe example chosen for purposes of disclosure, and covers all changesand modifications which do not constitute departures from the truespirit and scope of this invention.

Although the application describes embodiments having specificstructural features and/or methodological acts, it is to be understoodthat the claims are not necessarily limited to the specific features oracts described. Rather, the specific features and acts are merelyillustrative some embodiments that fall within the scope of the claimsof the application.

What is claimed is:
 1. A method comprising: provisioning a routingdevice in a first network domain, wherein the first network domainincludes a service discovery system that maintains network configurationdata for a multi-domain network that includes at least the first networkdomain and a second network domain, wherein a first indication that therouting device is being provisioned in the first network domain of themulti-domain network is sent to the service discovery system; sending,from the routing device and responsive to the routing device comingonline, a request to register with the service discovery system for useof the network configuration data; receiving, at the routing device, thenetwork configuration data; identifying, by the routing device and basedat least in part on the network configuration data, network nodes in themulti-domain network; and establishing, partly by the routing device andbased in part on the routing device receiving the network configurationdata for the multi-domain network, network routes through themulti-domain network with the network nodes, wherein a first networkroute of the network routes is associated with the first network domainand a second network route of the network routes is associated with thesecond network domain.
 2. The method of claim 1, further comprising:sending, from the routing device, a request for a health checkassociated with the first network domain; receiving, at the routingdevice and from the service discovery system, a second indication that anetwork route of the network routes is unreachable; and removing, partlyby the routing device, the network route from the network routes.
 3. Themethod of claim 1, further comprising: sending, from the routing device,a request for a health check associated with the first network domain;receiving, at the routing device and from the service discovery system,a second indication that a first network route of the network routes isperforming below a threshold level of performance; and prioritizing,partly by the routing device, a second network route of the networkroutes over the first network route, wherein the second network route isperforming above the threshold level of performance.
 4. The method ofclaim 1, wherein the routing device is a first routing device, and themethod further comprising: receiving, at the first routing device, asecond indication that a second routing device in the second networkdomain is registered with the service discovery system; establishing,partly by the first routing device and based at least in part on thenetwork configuration data, a network tunnel connecting the firstrouting device to the second routing device; identifying, by the firstrouting device and based at least in part on the network configurationdata, additional network nodes associated with the second routing devicein the multi-domain network; and establishing, partly by the firstrouting device, additional network routes through the multi-domainnetwork with the additional network nodes.
 5. The method of claim 4,further comprising: receiving, at the first routing device, a thirdindication that the second routing device deregistered with the servicediscovery system; and removing, partly by the first routing device andbased at least in part on the network configuration data, the networktunnel connecting the first routing device to the second routing device.6. The method of claim 4, further comprising: receiving, at the firstrouting device, a third indication that the second routing devicederegistered with the service discovery system; and removing, partly bythe first routing device and based at least in part on receiving thethird indication, the additional network routes through the multi-domainnetwork.
 7. The method of claim 1, wherein the network routes are firstnetwork routes, and the method further comprising: sending, from therouting device, a request for a performance check associated with thefirst network domain; receiving, at the routing device and from theservice discovery system, network performance data associated with thefirst network domain, the network performance data indicating at leastone of bandwidth usage of the network nodes, central processing unit(CPU) usage of the network nodes, and a number of links available to thenetwork nodes; and establishing, partly by the routing device and basedat least in part on the network performance data, second network routesthrough the multi-domain network with the network nodes, the secondnetwork routes being different from the first network routes.
 8. Asystem comprising: one or more processors; and one or morecomputer-readable media storing computer-executable instructions that,when executed by the one or more processors, cause the one or moreprocessors to perform operations comprising: provisioning a routingdevice in a first network domain, wherein the first network domainincludes a service discovery system that maintains network configurationdata for a multi-domain network that includes at least the first networkdomain and a second network domain, wherein a first indication that therouting device is being provisioned in the first network domain of themulti-domain network is sent to the service discovery system; sending,from the routing device and responsive to the routing device comingonline, a request to register with the service discovery system for useof the network configuration data; receiving, at the routing device, thenetwork configuration data; identifying, by the routing device and basedat least in part on the network configuration data, network nodes in themulti-domain network; and establishing, partly by the routing device andbased in part on the routing device receiving the network configurationdata for the multi-domain network, network routes through themulti-domain network with the network nodes, wherein a first networkroute of the network routes is associated with the first network domainand a second network route of the network routes is associated with thesecond network domain.
 9. The system of claim 8, the operations furthercomprising: sending, from the routing device, a request for a healthcheck associated with the first network domain; receiving, at therouting device and from the service discovery system, a secondindication that a network route of the network routes is unreachable;and removing, partly by the routing device, the network route from thenetwork routes.
 10. The system of claim 8, the operations furthercomprising: sending, from the routing device, a request for a healthcheck associated with the first network domain; receiving, at therouting device and from the service discovery system, a secondindication that a first network route of the network routes isperforming below a threshold level of performance; and prioritizing,partly by the routing device, a second network route of the networkroutes over the first network route, wherein the second network route isperforming above the threshold level of performance.
 11. The system ofclaim 8, wherein the routing device is a first routing device, and theoperations further comprising: receiving, at the first routing device, asecond indication that a second routing device in the second networkdomain is registered with the service discovery system; establishing,partly by the first routing device and based at least in part on thenetwork configuration data, a network tunnel connecting the firstrouting device to the second routing device; identifying, by the firstrouting device and based at least in part on the network configurationdata, additional network nodes associated with the second routing devicein the multi-domain network; and establishing, partly by the firstrouting device, additional network routes through the multi-domainnetwork with the additional network nodes.
 12. The system of claim 11,the operations further comprising: receiving, at the first routingdevice, a third indication that the second routing device deregisteredwith the service discovery system; and removing, partly by the firstrouting device and based at least in part on the network configurationdata, the network tunnel connecting the first routing device to thesecond routing device.
 13. The system of claim 11, the operationsfurther comprising: receiving, at the first routing device, a thirdindication that the second routing device deregistered with the servicediscovery system; and removing, partly by the first routing device andbased at least in part on receiving the third indication, the additionalnetwork routes through the multi-domain network.
 14. The system of claim8, wherein the network routes are first network routes, and theoperations further comprising: sending, from the routing device, arequest for a performance check associated with the first networkdomain; receiving, at the routing device and from the service discoverysystem, network performance data associated with the first networkdomain, the network performance data indicating at least one ofbandwidth usage of the network nodes, central processing unit (CPU)usage of the network nodes, and a number of links available to thenetwork nodes; and establishing, partly by the routing device and basedat least in part on the network performance data, second network routesthrough the multi-domain network with the network nodes, the secondnetwork routes being different from the first network routes.
 15. Aservice discovery system that maintains network configuration data, theservice discovery system comprising: a first network domain of amulti-domain network including at least a datastore that stores networkconfiguration data for the multi-domain network; one or more processors;and one or more computer-readable media storing computer-executableinstructions that, when executed by the one or more processors, causethe one or more processors to perform operations comprising: receiving,at the service discovery system, an indication that one or more firstrouting devices are being provisioned in the first network domain;receiving, at the service discovery system and from the one or morefirst routing devices in response to the first routing device comingonline, a first request to register with the service discovery systemfor use of the network configuration data; identifying, by the servicediscovery system and in the datastore, the network configuration datafor the first network domain; and sending, from the service discoverysystem and to the one or more first routing devices, the networkconfiguration data for the first network domain, wherein the networkconfiguration data includes at least first configuration data forestablishing first network routes through the multi-domain network withfirst network nodes in the first network domain.
 16. The system of claim15, the operations further comprising: receiving, at the servicediscovery system and from the one or more first routing devices, arequest for a health check; determining, partly by the service discoverysystem, that a network route of the first network routes is unreachable;and sending, from the service discovery system and to the one or morefirst routing devices, an indication that the network route isunreachable.
 17. The system of claim 15, the operations furthercomprising: receiving, at the service discovery system and from the oneor more first routing devices, a request for a performance checkassociated with the first network domain; determining, by the servicediscovery system, network performance data associated with the firstnetwork domain, the network performance data indicating at least one ofbandwidth usage of the first network nodes, central processing unit(CPU) usage of the first network nodes, and a number of links availableto the first network nodes; and sending, from the service discoverysystem and to the one or more first routing devices, the networkperformance data.
 18. The system of claim 15, the operations furthercomprising: receiving, at the service discovery system and from the oneor more first routing devices, a request for a health check;determining, partly by the service discovery system, that a networkroute of the first network routes is performing below a threshold levelof performance; and sending, from the service discovery system and tothe one or more first routing devices, an indication that the networkroute is performing below the threshold level of performance.
 19. Thesystem of claim 15, the operations further comprising: receiving, at theservice discovery system and from one or more second routing devicesprovisioned in a second network domain of the multi-domain network, asecond request to register with the service discovery system for use ofthe network configuration data; identifying, by the service discoverysystem and in the datastore, the network configuration data for thefirst network domain and the second network domain; and sending, fromthe service discovery system and to the one or more second routingdevices, the network configuration data for the first network domain andthe second network domain, wherein the network configuration dataincludes at least the first configuration data and second configurationdata for establishing second network routes through the multi-domainnetwork with second network nodes in the second network domain.
 20. Thesystem of claim 19, the operations further comprising: receiving, at theservice discovery system, an indication that the one or more secondrouting devices deregistered with the service discovery system; andsending, from the service discovery system and to the one or more firstrouting devices, the indication that the one or more second routingdevices deregistered with the service discovery system.